home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / fb386 / tool / ress / ress.bas < prev    next >
BASIC Source File  |  1995-08-20  |  114KB  |  3,467 lines

  1. 100  '===========================================
  2. 110  '
  3. 120  '        RPG Engine Support System
  4. 130  '                RESS  
  5. 140  '              Ver.0.91 #07
  6. 150  '       Copyright(c) 黒木謙治 (RoCky)
  7. 170  '                公開2版 
  8. 180  '
  9. 190  '===========================================
  10. 200  '###########################################
  11. 210  ' 1000番台~9000番台は個人拡張スペースです。
  12. 10000 '+--====================================--+
  13. 10010 '|○        RESSメインエンジン      ○|
  14. 10020 '|               [Sys_RESS]               |
  15. 10030 '|○         RESS Ver.0.91#07       ○|
  16. 10040 '+--====================================--+
  17. 10050 *System_RESS
  18. 10060   def sprite 99,0
  19. 10070   randomize time 
  20. 10080   gosub *Sys_StartMemory
  21. 10090   clear,,1024,fre(4)*0.8-300*1024,0,300*1024
  22. 10100   defint A-Z  
  23. 10110   gosub *Sys_MemoryCheck 
  24. 10120   RESSEND = 0 
  25. 10130   on error goto *ERR_END
  26. 10170   while RESSEND = 0 
  27. 10180     on error goto *ERR_PRINTEND
  28. 10190     gosub *Sys_BaseSetup 
  29. 10200     gosub *Sys_MemorySet 
  30. 10210     gosub *Sys_ConfigLoad
  31. 10220     gosub *Sys_CFGERR
  32. 10230     gosub *Debug_ModeSet  
  33. 10240     gosub *Sys_ExMemorySet
  34. 10250     gosub *Sys_BgmSetLoad 
  35. 10260     gosub *Sys_DataLoad
  36. 10270     gosub *Sys_WaitSet 
  37. 10280     gosub *READ_SPRYSP 
  38. 10300     gosub *Sys_ShowLogo
  39. 10310     gosub *INT_SCN
  40. 10320     gosub *SET_SPR_WEPON
  41. 10330     gosub *Sys_Startup  
  42. 10340     gosub *Main_MapSetup
  43. 10350     gosub *Main_MapMain 
  44. 10370     gosub *INT_SCN
  45. 10380     gosub *Debug_MemoryView
  46. 10390     if syscfg$(9) <> "" and syscfg$(9) <> "OFF" then run syscfg$(9)
  47. 10400   wend
  48. 10460   if val( syscfg$(5) ) = 1 then system
  49. 10470 end
  50. 10480 '
  51. 10490 '
  52. 11000 '+--===================================--+
  53. 11010 '|○スタートアップメニュー             ○|
  54. 11020 '|  [Sys_Startup]             コンフィグ(28) |
  55. 11030 '+--===================================--+
  56. 11040 *Sys_Startup
  57. 11050   if RESSEND = 0 then
  58. 11060     on error goto *ERR_END
  59. 11070     def font "システム   12ドット"
  60. 11080     gosub *INT_SCN
  61. 11090     gosub *CG_OFF 
  62. 11100     load@ sysf$ + syscfg$(28) 
  63. 11110     SX =103 : SY =  27 : SYM$ = "システムメニュー♪"     : gosub *WRT_SYM
  64. 11120     SX = 70 : SY =  81 : SYM$ = "このゲームを始める"     : gosub *WRT_SYM
  65. 11130     SX = 70 : SY = 113 : SYM$ = "RPGデータを編集する" : gosub *WRT_SYM
  66. 11140     SX = 70 : SY = 145 : SYM$ = "操作方法の説明を見る"   : gosub *WRT_SYM
  67. 11150     SX = 70 : SY = 177 : SYM$ = "RESSシステムを終了する" : gosub *WRT_SYM
  68. 11160     gosub *MBUF_IN
  69. 11170     line  (  0,  0) - (319,239),pset,0,bf
  70. 11180     gosub *CG_ON
  71. 11190     for I = 0 to 239 step 2
  72. 11200       put@a (  0,  0+I) - (319,  0+I),GRP%,,,,,     I *320
  73. 11210       put@a (  0,239-I) - (319,239-I),GRP%,,,,,(239-I)*320
  74. 11220       wait 1 
  75. 11230     next I  
  76. 11240     gosub *INT_PAD 
  77. 11250     CSL   = 0 
  78. 11260     PTSET = 0
  79. 11270     while PTSET = 0
  80. 11280       line ( 63,79+32*CSL) - (256,96+32*CSL),xor,1,bf
  81. 11290       PADSET = 3 
  82. 11300       gosub *WAIT_PAD 
  83. 11310       line ( 63,79+32*CSL) - (256,96+32*CSL),xor,1,bf
  84. 11320       if PD = 1 then CSL = CSL - 1 : if CSL < 0 then CSL = 3
  85. 11330       if PD = 5 then CSL = CSL + 1 : if CSL = 4 then CSL = 0
  86. 11340       if PT = 1 then on CSL+1 gosub *START,*EDIT_IN,*Sys_Manual_M,*ENDMNS
  87. 11350     wend
  88. 11360     for I = 0 to 40
  89. 11370       line (    I,0)-(    I,255),pset,[  0,  0,255-I*2]
  90. 11380       line (319-I,0)-(319-I,255),pset,[  0,  0,255-I*2]
  91. 11390     next I
  92. 11400     for Y = 0 to 239
  93. 11410       line ( 41,  Y) - (279,  Y),pset,[  0,  0,  Y] 
  94. 11430     next Y
  95. 11440     for I = 0 to 319 step 2
  96. 11450       line (    I,  0) - (    I,239),pset,0,bf
  97. 11460       line (319-I,  0) - (319-I,239),pset,0,bf
  98. 11470     next I 
  99. 11480     on error goto *ERR_PRINTEND
  100. 11490   endif
  101. 11500 return
  102. 11510 '
  103. 11600 '/* ---<<ゲームスタート!!>>--- */
  104. 11610 *START
  105. 11620   PTSET = 1
  106. 11630   if DBM = 4 then DBM = 0
  107. 11640   SX =  26
  108. 11650   SY = 208
  109. 11660   SYM$ = "@ye@ft○ ゲームをスタートします ○@it"
  110. 11670   gosub *WRT_SYM
  111. 11680 return
  112. 11690 '
  113. 11700 '/* ---<<終わっちゃいます♪>>--- */
  114. 11710 *ENDMNS
  115. 11720  PTSET   = 1
  116. 11730  RESSEND = 1
  117. 11740   SX =  26
  118. 11750   SY = 208
  119. 11760   SYM$ = "@ye@ft○ RPGシステム RESSを終了します ○@it"
  120. 11770   gosub *WRT_SYM
  121. 11780 return
  122. 11790 '
  123. 11800 '/* ---<< 編集モード移行 >>--- */
  124. 11810 *EDIT_IN
  125. 11820   if EDIT_ON = 7 then
  126. 11830     PTSET = 1
  127. 11840     DBM   = 4
  128. 11850   else
  129. 11860     SX =  16 
  130. 11870     SY = 208 
  131. 11880     SYM$ = "@ye○ この機能は使えません ○@it"
  132. 11890     gosub *WRT_SYM
  133. 11900   endif
  134. 11910 return
  135. 11920 '
  136. 12000 '+--===================--+
  137. 12010 '|○   基礎変数設定    ○|
  138. 12020 '|○  [Sys_BaseSetup]  ○|
  139. 12030 '+--===================--+
  140. 12040 *Sys_BaseSetup
  141. 12050   if RESSEND = 0 then
  142. 12100     SVER$     = "RESS v0.91#07"
  143. 12110     MAPX_MAX  =  5 : MAPY_MAX =  6
  144. 12120     VWMAPX    = 16 : VWMAPY   = 11
  145. 12130     FONTSIZE  =  12 
  146. 12140     PTN_MAX   = 192 
  147. 12150     NMPTN     =  72 
  148. 12160     HVPTN =  6 + NMPTN 
  149. 12170     HDPTN =  6 + HVPTN 
  150. 12180     EVPTN = 12 + HDPTN 
  151. 12190     NIPTN = 96 + EVPTN 
  152. 12200     BCHR_MAX   =   7 
  153. 12210     MCHR_MAX   =   7 
  154. 12220     ANMFLM_MAX =  24 
  155. 12230     ANMSET_MAX =  24 
  156. 12240     MCLINE_MAX =  16 
  157. 12250     MCCMD_MAX  =  72 
  158. 12260     BMNCMD_MAX =  19 
  159. 12270     FMNCMD_MAX =  19 
  160. 12280     MAGIC_MAX  =  19 
  161. 12290     WCHR_MAX   =  63 
  162. 12300     ITEM_MAX   =  10
  163. 12340     EVSET_MAX  =  63 
  164. 12350     SCPSET_MAX = 127 
  165. 12360     STRYMAX    = 300 
  166. 12370     USRFLG_MAX = 500  ' --- Reserved ---
  167. 12380     ENDS       =   0 
  168. 12390     CHG        =   1 
  169. 12400     CHGX       =   0 
  170. 12410     CHGY       =   0 
  171. 12420     FILEN      =   1 
  172. 12430     MNSON      =   0 
  173. 12440     SCRN_MODE  =   1  ' スキャンモード変更ルーチン用
  174. 12450     SCRN_X     =  32 
  175. 12460     PTNNUM     =  -1  ' 編集モード時パターン選択機能バッファ
  176. 12500     OLDPTN     =  -1 
  177. 12510     TPSET      =   0  ' クラス1バッファフラグ初期化
  178. 12520     GRPBFSET   =   0  ' クラス2バッファフラグ初期化
  179. 12530     S!         =0.75 
  180. 12540     MJC        =   7 
  181. 12550     DEFSPR_MONS1 = 0 
  182. 12560     DEFSPR_MONS2 = 0 
  183. 12570     DEFSPR_MONS3 = 0 
  184. 12580     EXCHRSET(1)  = 0 
  185. 12590     EXCHRSET(2)  = 0 
  186. 12600     ALMAPX       = MAPX_MAX * VWMAPX
  187. 12610     ALMAPY       = MAPY_MAX * VWMAPY
  188. 12620     if MSGW_SPC$ = "" then 
  189. 12630       MSGW_SPC$ = "@wh- RPG System @grRESS@wh -@th"
  190. 12640     endif
  191. 12650   endif
  192. 12660 return
  193. 12670 '
  194. 13000 '+--===================================--+
  195. 13010 '|○           環境変数宣言            ○|
  196. 13020 '|○ [Sys_MemorySet] [Sys_ExMemorySet] ○|
  197. 13030 '+--===================================--+
  198. 13040 *Sys_MemorySet
  199. 13050   if RESSEND = 0 then 
  200. 13060     if MEMSET_A = 0 then
  201. 13100       dim SYSCFG$(100)  
  202. 13110       dim MAP_DATA%(ALMAPX,ALMAPY)
  203. 13120       dim MAP_PTN%( 256 * (PTN_MAX+1) )
  204. 13130       dim TMPPTN%(256)
  205. 13140       dim TMP%(1023), TMM$(9) 
  206. 13150       dim BGMN%(20) , CDTMP%(10) 
  207. 13160       dim  EVX(EVSET_MAX) ,  EVY(EVSET_MAX) , CMND$(EVSET_MAX) 
  208. 13170       dim ITEM$( ITEM_MAX , 2 )
  209. 13200       dim BTLM_SUB$(MAGIC_MAX)
  210. 13210       dim BSMES$(20)  , BSMSC%(20) 
  211. 13220       dim BSWPN$(20)  , BSWPP%(20) , BSEND$(20)
  212. 13230       dim STRYFLG% (STRYMAX)
  213. 13240       dim  SCRPT$( SCPSET_MAX )
  214. 13250       dim SCPFLG%( SCPSET_MAX )
  215. 13260       dim MENUCMD%( BMNCMD_MAX , 1 )
  216. 13270       dim BTLMCMD%( FMNCMD_MAX , 1 )  ' 0=MACNO 1=FlagLnk
  217. 13280       dim MACSCP$( MCCMD_MAX , MCLINE_MAX )
  218. 13290       dim MACLINEMAX%( MCCMD_MAX )
  219. 13300       dim B_ITEM$(29)
  220. 13310       dim TEXTTMP$(21)
  221. 13320       dim AG_BF%( ANMSET_MAX )
  222. 13330       dim ANMG%( ANMSET_MAX , ANMFLM_MAX , 3 )
  223. 13340       ' 数,フレーム,( 0=SPR 1=X  2=Y 3=CHR )
  224. 13350       '           0=PTN 1=CHR 
  225. 13360       dim MCHR%( MCHR_MAX , 1 )
  226. 13370       dim BCHR%( BCHR_MAX , 1 )
  227. 13380       dim WPNCHR%( WCHR_MAX )
  228. 13390       dim DIV(12)
  229. 13430       dim DF(64) , CH(192,4) , PL(16)    ' for YSP
  230. 13440       dim PTNBANK$ (10) , BACKBANK$(10) 
  231. 13450       MEMSET_A = 1 
  232. 13460     endif 
  233. 13470   endif   
  234. 13480 return    
  235. 13490 '
  236. 13500 '/* ---<< グラフィック&サウンド配列設定 >>--- */
  237. 13510 *Sys_ExMemorySet
  238. 13520   if RESSEND = 0 then 
  239. 13530     if MEMSET_E = 0 then  
  240. 13540       dim GRP%    (76800) 
  241. 13550       dim MONSBF% ( 4096) 
  242. 13560       dim BTLBACK%(11264) '77000 + 4096 + 9216 + 256 = 90568 
  243. 13570       dim MESW%   ( 256 ) 
  244. 13590       EXCLAS = 0          
  245. 13600       if FREXCL => 1 then 
  246. 13610         dim EXGBF%(80000) '( 9984 )→10000
  247. 13620         dim SND%  (10000) '80000 + 10000 = 90256 
  248. 13630         EXCLAS = 1 
  249. 13640         if FREXCL => 2 then  
  250. 13650           dim GRPBF% ( 80000 ) 
  251. 13660           dim EUPMEM%(EUPSIZE*1024) 
  252. 13670           EXCLAS = 2 
  253. 13700         endif
  254. 13710       endif  
  255. 13750       MEMSET_E = 1  
  256. 13760     endif 
  257. 13770   endif 
  258. 13780 return 
  259. 13790 '
  260. 14000 '+--==================--+
  261. 14010 '|○  メインルーチン  ○|
  262. 14020 '|○                  ○|
  263. 14030 '+--==================--+
  264. 14100 *Main_MapSetup
  265. 14110   if RESSEND = 0 then
  266. 14120     gosub *INT_SFLG
  267. 14130     gosub *INT_SCN 
  268. 14140     gosub *FAST_ON 
  269. 14150     gosub *SPR_ON  
  270. 14160     on error goto *ERR_END
  271. 14170     gosub *DRW_WAKU
  272. 14180     if syscfg$(9) = "OFF" or syscfg$(9) = "" then
  273. 14190       rem
  274. 14200     else
  275. 14210       SCPFILE$ = syscfg$(9)
  276. 14220       gosub *SCRPT_RUN
  277. 14230     endif
  278. 14240     if DBM = 4 then
  279. 14250       FILEN = 0
  280. 14260       DEMO  = 0
  281. 14270       gosub *MainLOADNOTE
  282. 14280       gosub *LOADFILE
  283. 14290       MSG$ = "@gr--RESS編集機能動作中--@th" 
  284. 14300       gosub *PUT_MES
  285. 14320     else
  286. 14330       gosub *FILELOAD_1
  287. 14340     endif
  288. 14350     gosub *FADE_DISPMAP
  289. 14360     if DBM = 0 and syscfg$(7) <> "" then 
  290. 14370       MEST = 1
  291. 14380       MSG$ = syscfg$(7)
  292. 14390       gosub *PUT_MES
  293. 14400       MEST  = 0
  294. 14410     endif
  295. 14420     MSG$ = ""
  296. 14430     gosub *PUT_MES
  297. 14440     gosub *FAST_OFF
  298. 14450   endif
  299. 14480 return
  300. 14490 '
  301. 14500 '/* ---<<マップ上移動ルーチン本体>>--- */
  302. 14510 *Main_MapMain
  303. 14520   if RESSEND = 0 then
  304. 14530     on error goto *ERR_END
  305. 14540     gosub *CHR_ON
  306. 14550     MVCHG = 1
  307. 14560     while ENDS = 0
  308. 14570       on int( (PD+1) / 2 ) gosub *S_UP,*S_RIGHT,*S_DOWN,*S_LEFT
  309. 14580       gosub *INP_PAD
  310. 14590       while PD = 0
  311. 14600         gosub *INP_PAD
  312. 14610         if PT <> 0 or ENDS <> 0 then PD = 99
  313. 14620       wend
  314. 14630       if DBM = 4 then
  315. 14640         put@a (299,170) - (314,185),MAP_PTN%,,,,,256*CHG
  316. 14650         if PT = 1 then gosub *PUTPTN
  317. 14660         if PT = 8 then gosub *CHGPTN
  318. 14670       endif
  319. 14680       if PT =  1 and DBM <> 4 then gosub *CHK_EVENT
  320. 14690       if PT =  2 and DBM <> 4 then gosub *SUB_MENU
  321. 14700       if PT =  2 and DBM =  4 then gosub  *EX_MENU
  322. 14710       if PT =  8 and DBM <> 4 then gosub *ScanChg
  323. 14720       if PT = 10              then end 
  324. 14730       if ( RND < BTLPST! ) and DBM <> 4 and PT <> 1 then gosub *BATTLE 
  325. 14740     wend
  326. 14750     gosub *CHR_OFF
  327. 14800     if EXCLAS =>1 then gosub *FADE_5 else gosub *FADE_4
  328. 14810     gosub *FADE_1
  329. 14820   endif
  330. 14830   sprite off
  331. 14840   on error goto *ERR_PRINTEND
  332. 14850 return
  333. 14860 '
  334. 15000 '/* ---<<イベント起動>>--- */
  335. 15010 *CHK_EVENT
  336. 15020   if DBM <> 4 then
  337. 15030     gosub *FAST_ON
  338. 15040     for DP = 1 to AMC
  339. 15050       if SMAPX = EVX(DP) and SMAPY = EVY(DP) then
  340. 15060         ESUB$ = CMND$(DP)
  341. 15070         gosub *EVSUB 
  342. 15080       endif
  343. 15090     next DP
  344. 15100     gosub *FAST_OFF
  345. 15110   endif
  346. 15120   gosub *INT_PAD
  347. 15130 return
  348. 15140 '
  349. 15200 ' Event SUB
  350. 15210 *EVSUB
  351. 15220   EVTMP$ = mid$(ESUB$,1,6)
  352. 15230   if EVTMP$ = "SCPRUN" then
  353. 15240     SCPFILE$ = mid$( ESUB$, 8 , 11 )
  354. 15250     gosub *SCRPT_RUN
  355. 15280     gosub *PUT_MES 
  356. 15290     wait 20
  357. 15300   else if EVTMP$ <> "SCPRUN" then
  358. 15310     CMDL$ = ESUB$
  359. 15320     FLGON = 0
  360. 15330     gosub *SCP_MAIN
  361. 15340   endif
  362. 15350 return 
  363. 15360 '
  364. 16000 '+---=========================---+
  365. 16010 '|○   マップデータローダー    ○|
  366. 16020 '|○ [Main_ReadMap] [READ_MAP] ○|
  367. 16030 '+---=========================---+
  368. 16040 *Main_ReadMap
  369. 16050 *READ_MAP
  370. 16080   gosub *FAST_ON
  371. 16090   OLDPTN = PTNNUM
  372. 16100   if DBM = 4 or DBM = 1 then
  373. 16110     MSG$ = str$(ALMAPS) + "番のマップデータを読み込んでま~す♪@th"
  374. 16120   else
  375. 16130     MSG$ = "@wh--只今地図を探索しています♪--@th"
  376. 16140   endif
  377. 16150   gosub *PUT_MES 
  378. 16190   FILE$ = stryf$ + "EMAP_" + mid$( str$(ALMAPS),2) + ".MTB"
  379. 16200   FLNO% = 2
  380. 16210   open FILE$ for input as #FLNO%
  381. 16220    'input#FLNO%,DUMMY$
  382. 16230     gosub *Main_MapData_Load
  383. 16240     gosub *Main_MapEVENT_Load
  384. 16260     gosub *Main_MapPTN_Load 
  385. 16270   close #FLNO%
  386. 16280   CDNO = CDBG 
  387. 16290   gosub *CDPLY
  388. 16300   gosub *FAST_OFF
  389. 16310   on error goto 0
  390. 16320   BKSET = 0
  391. 16330 return
  392. 16340 '
  393. 16400 '/* ---<<マップデータテーブル読み込み>>--- */
  394. 16410 *Main_MapData_Load
  395. 16420   input#FLNO%, CDBG , MAPX_MAX, MAPY_MAX
  396. 16430   input#FLNO%, MNSON, PTNNUM  , BACKNO  
  397. 16440   input#FLNO%, BTLPST!
  398. 16450   for I = 1 to 8
  399. 16460     input#FLNO%, MSNMD$(I),  MSLVD(I), MSMXHPD(I)
  400. 16470     input#FLNO%, MSATPD(I),  MSDFD(I),    CLJD(I)
  401. 16480     input#FLNO%, MSEXPD(I), MSGLDD(I), MSTIFD$(I), MSSIZD(I)
  402. 16490   next I
  403. 16500 return 
  404. 16510 '
  405. 16600 '/* ---<<イベント設定所読み込み>>--- */
  406. 16610 *Main_MapEVENT_Load
  407. 16620   input#FLNO%,AMC 
  408. 16630   for I = 1 TO AMC
  409. 16640     input#FLNO%, EVX(I), EVY(I), CMND$(I)
  410. 16650   next I
  411. 16660 return 
  412. 16670 '
  413. 16700 '/* ---<<マップパターンデータ読み込み>>--- */
  414. 16710 *Main_MapPTN_Load 
  415. 16720   FILE$ = stryf$ + "EMAP_" + mid$ ( str$(ALMAPS),2 ) + ".BMD"
  416. 16730   load@ FILE$,MAP_DATA% 
  417. 16740   ALMAPX = MAPX_MAX * VWMAPX
  418. 16750   ALMAPY = MAPY_MAX * VWMAPY
  419. 16760   gosub *RESET_PTN
  420. 16770 return 
  421. 16780 '
  422. 17000 '+---==================---+
  423. 17010 '|○ フィールドメニュー ○|
  424. 17020 '|○     [SUB_MENU]     ○|
  425. 17030 '+---==================---+
  426. 17040 *SUB_MENU 
  427. 17090   MENULP = 1
  428. 17100   while MENULP = 1 
  429. 17110     MACNO = FLDMAC
  430. 17120     gosub *RUN_MAC
  431. 17130     gosub *INT_PAD
  432. 17140     MXCMD  = MENUMAX%
  433. 17150     if CMDNO > MXCMD then CMDNO = 1
  434. 17160     TIFSET = 1
  435. 17170     CNSLON = 1
  436. 17180     gosub *SPMENUR
  437. 17190     if BTSET = 1 then
  438. 17200       FLGON = 0
  439. 17220       FLG   = STRYFLG%( MENUCMD%(CMDNO,1) )
  440. 17230       MACNO = MENUCMD%(CMDNO,0)
  441. 17300       if FLG = 1 then gosub *RUN_MAC else gosub *DONT_USE
  442. 17400     endif
  443. 17410     if CNSLEND = 1 or ENDS = 1 then MENULP = 0
  444. 17420   wend
  445. 17430   MSG$ = "" 
  446. 17440   gosub *PUT_MES
  447. 17450   gosub *FADE_DISPMAP
  448. 17460   gosub *INT_PAD
  449. 17470   gosub *CHR_ON 
  450. 17480 return
  451. 17490 '
  452. 17500 '+--===========================================--+
  453. 17510 '|○ メッセージ表示モジュール2型 (12Dotフォント)  ○|
  454. 17520 '|○       [Main_PutsMessage/PUT_MES]         ○|
  455. 17530 '+--===========================================--+
  456. 17540 *PUT_MES
  457. 17550 *Main_PutsMessage
  458. 17560   def font "システム   12ドット"
  459. 17570   if MSG$  = "" then MSG$ = MSGW_SPC$
  460. 17590   gosub *INT_MSGWIN
  461. 17600   SYM$ = MSG$
  462. 17610   gosub *INS_SYM
  463. 17620   MSG$ = SYM$
  464. 17630   gosub *COUNT_MSG
  465. 17640   if MEST = 1 then 
  466. 17650     if MZ > 52 then 
  467. 17660       SYM$ = mid$ ( MSG$,  1, 52 + BCODE * 3 ) 
  468. 17720       SX =   5 
  469. 17730       SY = 207 
  470. 17740       gosub *WRT_SYM
  471. 17750       SYM$ = mid$ ( MSG$, 53 + BCODE * 3    ) 
  472. 17770       SX =   5 
  473. 17780       SY = 220 
  474. 17790       gosub *WRT_SYM
  475. 17800     else
  476. 17810       SYM$ = MSG$ 
  477. 17820       SX   = 5 
  478. 17830       SY = 213 
  479. 17840       gosub *WRT_SYM
  480. 17850     endif
  481. 17860   else
  482. 17870     SYM$ = MSG$ 
  483. 17880     SX = int( ( 52 - MZ ) / 2) * 6 + 5 
  484. 17890     SY = 213 
  485. 17900     gosub *WRT_SYM
  486. 17910   endif
  487. 17920   if STP = 1 then 
  488. 17930     PADSET = 0 
  489. 17940     gosub *WAIT_PAD 
  490. 17950   endif
  491. 17960   STP  =  1
  492. 17970   MSG$ = ""
  493. 17980 return 
  494. 17990 '
  495. 18000 '+---==========================---+
  496. 18010 '|○ 各種データファイル読み込み ○|
  497. 18020 '|○                    File #1 ○|
  498. 18030 '+---==========================---+
  499. 18040 *Sys_DataLoad
  500. 18050   FLNO% = 1
  501. 18060   if DATACUST = 0 then 
  502. 18070     on error goto *ERR_PRINTEND
  503. 18100     '/* ---<< Read Battle-Customize Data >>--- */
  504. 18110     FILE$ = syscfg$(30)
  505. 18120     print "- RESS Battle-Command Customizing -"
  506. 18130     open sysf$ + FILE$ for input as #FLNO%
  507. 18140       input#FLNO%,DUMMY$,BTLMAX%
  508. 18150       for I = 1 to BTLMAX%
  509. 18160         input #FLNO%, BTLMCMD%(I,0), BTLMCMD%(I,1), BTLM_SUB$(I)
  510. 18170       next I
  511. 18180     close #FLNO%
  512. 18190     '
  513. 18200     '/* ---<< Read Menu-Customize Data >>--- */
  514. 18210     FILE$ = syscfg$(33)
  515. 18220     print "- RESS Menu-Command Customizeing -"
  516. 18230     open sysf$ + FILE$ for input as #FLNO%
  517. 18240       input#FLNO%,DUMMY$,MENUMAX%
  518. 18250       for I = 1 to MENUMAX%
  519. 18260         input #FLNO%,MENUCMD%(I,0),MENUCMD%(I,1)
  520. 18270       next I
  521. 18280     close #FLNO%
  522. 18290     '
  523. 18300     '/* ---<< Read MacroSystem Data >>---
  524. 18310     FILE$ = MACFILE$
  525. 18320     print "- RESS MacroCommand Manager v0.91 -
  526. 18330     open sysf$ + FILE$ for input as #FLNO%
  527. 18340       input#FLNO%,DUMMY$
  528. 18350       J = 1
  529. 18360       while eof(FLNO%) = 0
  530. 18370         input#FLNO%,MACNO%
  531. 18380         input#FLNO%,MACLINEMAX%(MACNO%)
  532. 18410         for I = 1 to MACLINEMAX%(MACNO%)
  533. 18420           input#FLNO%,MACSCP$( MACNO% , I ) 
  534. 18430         next I
  535. 18440         J = J + 1
  536. 18450       wend
  537. 18460       HOWMAC = J
  538. 18480     close #FLNO%
  539. 18490     '
  540. 18500     '/* ---<< Read ITEM DATA >>--- */
  541. 18510     FILE$ = ITMFILE$
  542. 18520     print "- Item Data Reading -
  543. 18530     open sysf$ + FILE$ for input as #FLNO%
  544. 18540       input#FLNO%,DUMMY$
  545. 18550       for J = 0 to 2
  546. 18560         for I = 1 to 8
  547. 18570           input#FLNO%,B_ITEM$( J * 10 + I )
  548. 18580         next I
  549. 18590       next J
  550. 18600     close #FLNO%
  551. 18610     '
  552. 18700     '/* ---<< Animation >>--- */
  553. 18710     print "- Sprite☆Animater -  Copyright(c) RoCky."
  554. 18720     FILE$ = syscfg$(38) 
  555. 18730     open sysf$ + FILE$ for input as #FLNO%
  556. 18740       input#FLNO%,DUMMY$
  557. 18750       LOOP = 1
  558. 18760       I = 0
  559. 18770       while LOOP = 1
  560. 18780       I = I + 1 
  561. 18790       input#FLNO%,TMM$
  562. 18800       ANM = val(mid$(TMM$,1,2))
  563. 18810       FLM = val(mid$(TMM$,4,2))
  564. 18820       ANMG%(ANM,FLM,0) = val(mid$(TMM$,19,3)) 'SPR
  565. 18830       ANMG%(ANM,FLM,1) = val(mid$(TMM$,11,3)) ' X 
  566. 18840       ANMG%(ANM,FLM,2) = val(mid$(TMM$,15,3)) ' Y 
  567. 18850       ANMG%(ANM,FLM,3) = val(mid$(TMM$, 7,3)) 'CHR
  568. 18860       if eof(FLNO%) = -1 then LOOP = 0
  569. 18870     wend
  570. 18880     close #FLNO%
  571. 18890     LMAX = I
  572. 18910     '
  573. 18920     load@ sysf$ + syscfg$(35) , MESW%
  574. 18930     DATACUST = 1
  575. 18940   endif
  576. 18970   on error goto *ERR_END
  577. 18980 return 
  578. 18990 '
  579. 19000 '+---====================---+
  580. 19010 '|○ エラートップルーチン ○|
  581. 19020 '|○                      ○|
  582. 19040 '+---====================---+
  583. 19100 '/* ---<< 終了エラーー >>--- */
  584. 19110 *ERR_END
  585. 19120   beep 1
  586. 19130   MSG$ = "@rd!!異常エラーが発生しました!!" : gosub *PUT_MES
  587. 19140   gosub *ERRCODE_SET
  588. 19150   MSG$ = "内容:" + ERC$ : gosub *PUT_MES
  589. 19160   MSG$ = "エラー行番号は " + str$(ERL) + "です。" : gosub *PUT_MES
  590. 19170   MSG$ = "--強制終了致します--" : gosub *PUT_MES
  591. 19180   end
  592. 19190 '
  593. 19200 '/* ---<<再起可能エラー>>--- */
  594. 19210 *ERR_RESUME
  595. 19220   beep 1
  596. 19230   MSG$ = "@rd!!異常エラーが発生しました!!" : gosub *PUT_MES
  597. 19240   gosub *ERRCODE_SET
  598. 19250   MSG$ = "内容:" + ERC$ : gosub *PUT_MES
  599. 19260   MSG$ = "エラー原因を確認して下さい。" : gosub *PUT_MES
  600. 19270   MSG$ = "エラー行番号は " + str$(ERL) + "です。" : gosub *PUT_MES
  601. 19280   resume
  602. 19290 '
  603. 19300 '/* ---<<再起可能エラー>>--- */
  604. 19310 *ERR_NEXT
  605. 19320   beep 1
  606. 19330   MSG$ = "@rd!!異常エラーが発生しました!!" : gosub *PUT_MES
  607. 19340   gosub *ERRCODE_SET
  608. 19350   MSG$ = "内容:" + ERC$ : gosub *PUT_MES
  609. 19360   MSG$ = "エラー原因を確認して下さい。" : gosub *PUT_MES
  610. 19370   MSG$ = "エラー行番号は " + str$(ERL) + "です。" : gosub *PUT_MES
  611. 19380   resume NEXT
  612. 19390 '
  613. 19400 '/* ---<< スクリプトエラー >>--- */
  614. 19410 *ERR_SCP
  615. 19420   beep 1
  616. 19430   MSG$ = "@rd!スクリプトモジュールでエラー発生!"  : gosub *PUT_MES 
  617. 19440   MSG$ = SCPFILE$ + " の" + str$(SCP_LINE) +"行目でエラーが発生しました."
  618. 19450   gosub *PUT_MES
  619. 19460   gosub *ERRCODE_SET  :  MSG$ = "内容:" + ERC$  :  gosub *PUT_MES
  620. 19470   MSG$ = "プログラム行番号は " + str$(ERL) + "です。" : gosub *PUT_MES
  621. 19480   resume *SERS
  622. 19490 '
  623. 19500 '/* ---<< 終了エラー(PRINT) >>--- */
  624. 19510 *ERR_PRINTEND
  625. 19520   beep  1
  626. 19530   color 2
  627. 19540   print "!!異常エラーが発生しました!!" 
  628. 19550   gosub *ERRCODE_SET 
  629. 19560   print "内容:" + ERC$
  630. 19570   print "エラー行番号は " + str$(ERL) + "です。終了します。" 
  631. 19580 end
  632. 19590 '
  633. 19700 '/* ---<<エラーコード設定>>--- */
  634. 19710 *ERRCODE_SET
  635. 19720   ERC$ = ""
  636. 19730   if ERR = 53 or ERR = 59 or ERR = 60 or ERR = 72 or ERR = 75 then 
  637. 19740     ERC$ = "ドライブ入出力エラーです。"
  638. 19750   else if ERR = 6 or ERR = 9 or ERR = 15 then 
  639. 19760     ERC$ = "作成データのユーザーミスです。" + str$(ERR) + "☆"
  640. 19770   else if ERR = 54 or ERR = 58 then 
  641. 19780     ERC$ = "作成データ内が正しく記述されていません。"
  642. 19790   else if ERR = 82 or ERR = 83 or ERR = 7 then
  643. 19800     ERC$ = "メモリに関するエラーです。"
  644. 19810   endif
  645. 19900   if ERR =  28 then ERC$ = "システム環境が対応していません。"
  646. 19910   if ERR =  55 then ERC$ = "ファイル/パス名の記述が正しくありません。"
  647. 19920   if ERR =  63 then ERC$ = "指定されたファイルが存在しません。"
  648. 19930   if ERR =  73 then ERC$ = "ディスクが書き込み禁止です。"
  649. 19940   if ERR = 112 then ERC$ = "TIFFファイルの画面モードが異常です。"
  650. 19950   if ERR = 115 then ERC$ = "CD演奏でデータトラックが指定されています。"
  651. 19960   if ERR = 121 then ERC$ = "数値データしか入力できません。"
  652. 19970   if ERC$ = "" then ERC$ = "プログラムエラーです。" + str$(ERR) + "☆"
  653. 19980 return
  654. 19990 '
  655. 20000 '/* ---<< 起動時メモリチェック >>--- */
  656. 20010 *Sys_StartMemory
  657. 20020   gosub *SND_BOOT98
  658. 20030   cls
  659. 20040   print "RESS Starting..."
  660. 20050   TMP& = fre(4)
  661. 20060   for I = 0 to int( TMP& / 1024 ) step 32
  662. 20070     locate 0,2
  663. 20080     print "Free Memory ... ";I;"K Bytes."
  664. 20090   next I
  665. 20100   TMP& = fre(4) * 0.8
  666. 20110   if TMP& <= 700*1024 then
  667. 20120     print "警告:システム動作用メモリが不足しています." : end
  668. 20130   endif
  669. 20140 return
  670. 20150 '
  671. 20300 '/* ---<<メモリチェック>>--- */
  672. 20310 *Sys_MemoryCheck
  673. 20320   print "Memory Checking..."
  674. 20330   TMP& = fre(3)
  675. 20340   if TMP& <= 500*1024 then
  676. 20350     EREND   = 1 
  677. 20360     RESSEND = 1 
  678. 20370     print "警告:システム動作用メモリが不足しています."
  679. 20380   else
  680. 20390     if TMP& < 520*1024 then 
  681. 20400       SMODE$ = "エコノミーモード"   : FREXCL = 0
  682. 20410     else if TMP& => 520*1024 and TMP& < 800*1024 then
  683. 20420       SMODE$ = "スタンダードモード" : FREXCL = 1
  684. 20430     else if TMP& => 800*1024 then
  685. 20440       SMODE$ = "エンハンスドモード" : FREXCL = 2
  686. 20450     endif 
  687. 20460     gosub *VIEW_MEMORY
  688. 20470   endif
  689. 20520 return
  690. 20530 '
  691. 20700 '/* ---<<オープニングロゴ>>--- */
  692. 20710 *Sys_ShowLogo
  693. 20720   if LOGOSET = 0 then 
  694. 20730     screen@ 2 
  695. 20740     cls 
  696. 20750     def font "システム   16ドット" 
  697. 20760     if ptrig(PORT) = 0 then 
  698. 20770       palette 0,[  0,  0,  0] 
  699. 20780       palette 1,[  0,  0,  0] 
  700. 20790       symbol (200,223),"Executing RESS. (c)Rocky",1,1,%1,,,1 
  701. 20800       for L = 0 to 255 step 4 
  702. 20810         if ptrig(PORT) = 2 then L = 254 : gosub *SND_PAD 
  703. 20820         palette 1,[L,L,L] 
  704. 20830         wait 1 
  705. 20840       next L  
  706. 20850       for L = 0 to 150 
  707. 20860         if ptrig(PORT) = 2 then L = 199 : gosub *SND_PAD 
  708. 20870         wait 1
  709. 20880       next L  
  710. 20890       for I = 255 to 0 step -4 
  711. 20900         if ptrig(PORT) = 2 then I = 1 : gosub *SND_PAD 
  712. 20910         palette 1,[I,I,I] 
  713. 20920         wait 1
  714. 20930       next I  
  715. 20940     endif     
  716. 20950     screen@ 0 
  717. 20960     LOGOSET = 1
  718. 20970   endif 
  719. 20980 return 
  720. 20990 ' 
  721. 22000 '+--====================================--+
  722. 22010 '|○        主人公移動モジュール        ○|
  723. 22020 '|○ [S_UP] [S_DOWN] [S_RIGHT] [S_LEFT] ○|
  724. 22030 '+--====================================--+
  725. 22100 '/* ---<<主人公を上へ動かす>>--- */
  726. 22110 *S_UP
  727. 22130  if MVCHG = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0)+2
  728. 22140  if SMAPY = 1 then
  729. 22150    beep
  730. 22160  else
  731. 22170    if MAP_DATA%(SMAPX,SMAPY-1) <= EVPTN or DBM = 4 then
  732. 22180      SMAPY = SMAPY - 1
  733. 22190      if SMAPY = VWMAPY * (MAPY-1) then
  734. 22200        MAPY = MAPY - 1
  735. 22210        if EXCLAS => 1 then 
  736. 22220          gosub *Main_Rollup
  737. 22230        else
  738. 22240          gosub *CHR_OFF
  739. 22250          sprite 6,MCHR%(0,1),0,176-sprite(MCHR%(0,1),7)
  740. 22260          gosub *DISP_MAP
  741. 22270          gosub *CHR_ON
  742. 22280        endif
  743. 22290      else
  744. 22300        MMV_CHR = MCHR%(0,1)
  745. 22320        SPRCLR = 1
  746. 22330        gosub *CHR_UP
  747. 22340      endif
  748. 22350      gosub *EVENT
  749. 22360    endif
  750. 22370  endif
  751. 22380 return
  752. 22390 '
  753. 22500 '/* ---<<主人公を右へ動かす>>--- /*
  754. 22510 *S_RIGHT
  755. 22530  if MVCHG = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0)+6
  756. 22540  if SMAPX = VWMAPX * MAPX_MAX then
  757. 22550    beep
  758. 22560  else
  759. 22570    if MAP_DATA%(SMAPX+1,SMAPY) <= EVPTN or DBM = 4 then
  760. 22580      SMAPX = SMAPX + 1
  761. 22590      if SMAPX = VWMAPX * MAPX + 1 then
  762. 22600        MAPX = MAPX + 1
  763. 22610        if EXCLAS => 1 then 
  764. 22620          gosub *Main_Rollright
  765. 22630        else
  766. 22640          gosub *CHR_OFF
  767. 22650          sprite 6,MCHR%(0,1),0-sprite(MCHR%(0,1),6),0
  768. 22660          gosub *DISP_MAP
  769. 22670          gosub *CHR_ON
  770. 22680        endif
  771. 22690      else
  772. 22700        MMV_CHR = MCHR%(0,1)
  773. 22710        SPRCLR = 1
  774. 22720        gosub *CHR_RIGHT
  775. 22730      endif
  776. 22740      gosub *EVENT
  777. 22750    endif
  778. 22760  endif
  779. 22770 return
  780. 22780 '
  781. 23000 '/* ---<<主人公を下へ動かす>>--- /*
  782. 23010 *S_DOWN
  783. 23030  if MVCHG = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0)+0
  784. 23040  if SMAPY = VWMAPY * MAPY_MAX then
  785. 23050    beep
  786. 23060  else
  787. 23070    if MAP_DATA%(SMAPX,SMAPY+1) <= EVPTN or DBM = 4 then
  788. 23080      SMAPY = SMAPY + 1
  789. 23090      if SMAPY = VWMAPY * MAPY + 1 then
  790. 23100        MAPY = MAPY + 1
  791. 23110        if EXCLAS => 1 then 
  792. 23120          gosub *Main_Rolldown 
  793. 23130        else 
  794. 23140          gosub *CHR_OFF
  795. 23150          sprite 6,MCHR%(0,1),0,16-sprite(MCHR%(0,1),7)
  796. 23160          gosub *DISP_MAP
  797. 23170          gosub *CHR_ON
  798. 23180        endif
  799. 23190      else
  800. 23200        MMV_CHR = MCHR%(0,1)
  801. 23210        SPRCLR = 1
  802. 23220        gosub *CHR_DOWN
  803. 23230      endif
  804. 23240      gosub *EVENT
  805. 23250    endif
  806. 23260  endif
  807. 23270 return
  808. 23280 '
  809. 23500 '/* ---<<主人公を左へ動かす>>--- */
  810. 23510 *S_LEFT
  811. 23530  if MVCHG = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 4
  812. 23540  if SMAPX = 1 then
  813. 23550    beep
  814. 23560  else
  815. 23570    if MAP_DATA%(SMAPX-1,SMAPY) <= EVPTN or DBM = 4 then
  816. 23580      SMAPX = SMAPX - 1
  817. 23590      if SMAPX = VWMAPX * (MAPX-1) then
  818. 23600        MAPX = MAPX - 1
  819. 23610        if EXCLAS => 1 then 
  820. 23620          gosub *Main_Rollleft 
  821. 23630        else 
  822. 23640          gosub *CHR_OFF
  823. 23650          sprite 6,MCHR%(0,1),240-sprite(MCHR%(0,1),6),0
  824. 23660          gosub *DISP_MAP
  825. 23670          gosub *CHR_ON
  826. 23680        endif
  827. 23690      else
  828. 23700        MMV_CHR = MCHR%(0,1)
  829. 23710        SPRCLR = 1
  830. 23720        gosub *CHR_LEFT
  831. 23730      endif
  832. 23740      gosub *EVENT
  833. 23750    endif
  834. 23760  endif
  835. 23770 return
  836. 23780 '
  837. 24000 '+--======================================--+
  838. 24010 '|○        総合スクロールルーチン        ○|
  839. 24020 '|   [ Main_Rolldown  ] [ Main_Rollup   ]   |
  840. 24030 '|○ [ Main_Rollright ] [ Main_Rollleft ] ○|
  841. 24040 '+--======================================--+
  842. 24100 '/* ---<<下にスクロールする>>--- */
  843. 24110 *Main_Rolldown 
  844. 24120  if EXCLAS => 1 then 
  845. 24130    gosub *MBIN_MAP
  846. 24140    TPSET = 0
  847. 24150    J     = 0
  848. 24160    for I = 1 to 11*(16/SCRL)
  849. 24180      get@a ( 32, 16+SCRL) - (287,191     ),EXGBF% 
  850. 24190      put@a ( 32, 16     ) - (287,191-SCRL),EXGBF% 
  851. 24200      put@a ( 32,192-SCRL) - (287,191),GRP%,,,,,(I-1)*SCRL*256
  852. 24210      if J < 16/SCRL then J = J + 1 else sprite 6,MCHR%(0,1),0,-SCRL
  853. 24220    next I
  854. 24230  endif 
  855. 24240 return 
  856. 24250 '
  857. 24300 '/* ---<<上にスクロールする>>--- */
  858. 24310 *Main_Rollup
  859. 24320  if EXCLAS >= 1 then
  860. 24330    gosub *MBIN_MAP
  861. 24340    TPSET = 0
  862. 24350    J     = 0
  863. 24360    for I = 11*(16/SCRL) to 1 step -1 
  864. 24380      get@a ( 32,     16) - (287,191-SCRL),EXGBF% 
  865. 24390      put@a ( 32,SCRL+16) - (287,191     ),EXGBF% 
  866. 24400      put@a ( 32,     16) - (287, 15+SCRL),GRP%,,,,,(I-1)*SCRL*256
  867. 24410      if J < 16/SCRL then J = J + 1 else sprite 6,MCHR%(0,1),0,SCRL
  868. 24420    next I
  869. 24430  endif 
  870. 24440 return 
  871. 24450 ' 
  872. 24500 '/* ---<<左にスクロールする>>--- */
  873. 24510 *Main_Rollleft
  874. 24520   if EXCLAS >= 1 then 
  875. 24530     gosub *MBIN_MAPSUB
  876. 24540     TPSET = 0
  877. 24550     J     = 0
  878. 24550     for I = 32 to 1 step -1  
  879. 24570       get@a ( 32, 16) - (279,191),EXGBF% 
  880. 24580       put@a ( 40, 16) - (287,191),EXGBF% 
  881. 24590       put@a ( 32, 16) - ( 39,191),GRP%,,,,,(I-1)*1408 
  882. 24600       if I <= 30 then sprite 6,MCHR%(0,1),8,0  
  883. 24610     next I 
  884. 24620   endif
  885. 24630 return
  886. 24640 '
  887. 24700 '/* ---<<右にスクロールする>>--- */
  888. 24710 *Main_Rollright
  889. 24720   if EXCLAS >= 1 then 
  890. 24730     gosub *MBIN_MAPSUB
  891. 24740     TPSET = 0 
  892. 24750     for I = 1 to 32 
  893. 24770       get@a ( 40, 16) - (287,191),EXGBF% 
  894. 24780       put@a ( 32, 16) - (279,191),EXGBF% 
  895. 24790       put@a (280, 16) - (287,191),GRP%,,,,,(I-1)*1408
  896. 24800       if I > 2 then sprite 6,MCHR%(0,1),-8,0
  897. 24810     next I
  898. 24820   endif
  899. 24830 return
  900. 24840 '
  901. 25000 '+--=========================================--+
  902. 25010 '|○ メニューシステムモジュール              ○|
  903. 25020 '|○(FILE$,MX,MY,MXCMD,CMDNO,TIFSET,CNSLON)○|
  904. 25040 '+--=========================================--+
  905. 25050 *SPMENUR
  906. 25100   if TIFSET = 0 then load@ FILE$,(MX,MY) 
  907. 25110   if CMDNO  = 0 then CMDNO = 1
  908. 25120   for I = 1 to MXCMD 
  909. 25130     line (MX+3+I*16, MY+5) - (MX+12+I*16, MY+10),pset,[ 0, 0, 0],bf 
  910. 25140   next I 
  911. 25150   gosub *INT_PAD
  912. 25160   KCL   = 0 
  913. 25170   DWKCL = 0 
  914. 25180   BTSET = 0 
  915. 25270   while BTSET = 0 
  916. 25280     if PD    =     7 then CMDNO  = CMDNO - 1 
  917. 25290     if CMDNO =     0 then CMDNO  = MXCMD     
  918. 25300     if PD    =     3 then CMDNO  = CMDNO + 1 
  919. 25310     if CMDNO > MXCMD then CMDNO  = 1 
  920. 25320     if PT    =     1 then BTSET  = 1 
  921. 25330     if PT    =     2  and CNSLON = 1 then BTSET = 2 
  922. 25350     wait PADWAIT 
  923. 25370     for I = 1 to MXCMD 
  924. 25380       line (MX+3+I*16,MY+5) - (MX+12+I*16,MY+10),pset,[0,0,0],bf 
  925. 25390     next I 
  926. 25400     gosub *INT_PAD
  927. 25410     while PD = 0 
  928. 25420       if DWKCL = 0 then KCL   = KCL + KCLSPD
  929. 25430       if DWKCL = 1 then KCL   = KCL - KCLSPD
  930. 25440       if KCL > 255 then DWKCL =   1 : KCL = 255
  931. 25450       if KCL <   0 then DWKCL =   0 : KCL =   0
  932. 25460       X = MX + 3 + CMDNO * 16 
  933. 25470       Y = MY + 5 
  934. 25480       line (  X,  Y) - (  X + 9,  Y + 5),pset,[KCL,KCL,KCL],bf
  935. 25490       gosub *INP_PAD
  936. 25500       if PT <> 0 or BTSET <> 0 then PD = 99
  937. 25530     wend 
  938. 25540     gosub *SND_PAD
  939. 25550   wend 
  940. 25560   for I = 1 to MXCMD
  941. 25570     line (MX+3+I*16,MY+5) - (MX+12+I*16,MY+10),pset,[ 0, 0, 0],bf 
  942. 25580   next I 
  943. 25600   CNSLEND = 0 
  944. 25620   if CNSLON = 1 and BTSET = 2 then 
  945. 25630     CNSLEND = 1
  946. 25640     line (MX+3,MY+3) - (MX+11,MY+11),xor,7,b
  947. 25650   endif
  948. 25670 return
  949. 25680 '
  950. 25690 '
  951. 26000 '+--==============================--+
  952. 26010 '|○   記録ノート読み込み/保存   ○|
  953. 26020 '|○   (メニューモジュール使用) File #1   ○|
  954. 26030 '+--==============================--+
  955. 26100 *FILELOAD_1 
  956. 26110    MACNO = SVNMAC
  957. 26120    gosub *RUN_MAC
  958. 26130    gosub *SUB_NOTEMENU
  959. 26140    if FILEN = 6 then FILEN = 0
  960. 26150    DEMO = 1 
  961. 26160    gosub *MainLOADNOTE
  962. 26170 return
  963. 26180 '
  964. 26200 *NOTESAVE_1 
  965. 26210   MACNO = LDNMAC
  966. 26220   gosub *RUN_MAC
  967. 26230   gosub *SUB_NOTEMENU
  968. 26240   if FILEN  = 6 then FILEN = 0
  969. 26250   gosub *MainSAVENOTE
  970. 26260 return
  971. 26270 '
  972. 26300 '/* ---<<ノート読込/保存時のメニュー呼出>>--- */
  973. 26310 *SUB_NOTEMENU
  974. 26320   MXCMD  = 6
  975. 26330   TIFSET = 1
  976. 26340   CNSLON = 0
  977. 26350   CMDNO  = FILEN
  978. 26360   gosub *SPMENUR
  979. 26370   FILEN  = CMDNO
  980. 26380 return
  981. 26390 '
  982. 27000 '/* ---<<ノート読込本体>>--- */
  983. 27010  *MainLOADNOTE
  984. 27020   FLNO% = 1 
  985. 27030   if FILEN <= 5 and FILEN => 0 then 
  986. 27040     FILE$ = SAVEF$ + "SP_SAV" + mid$( str$(FILEN),2 ) + ".RCY" 
  987. 27050     on error goto *ERR_RESUME
  988. 27060     open FILE$ for input as #FLNO% 
  989. 27070       for I = 0 to 16+STRYMAX
  990. 27080         input#FLNO%,TMP%(I)
  991. 27090       next I
  992. 27100     close #FLNO% 
  993. 27110     on error goto *ERR_END
  994. 27120     TMP%  = TMP%(0)
  995. 27130     LV    = TMP%(1)
  996. 27140     MAXHP = TMP%(2): HP = TMP%(3)
  997. 27150     MAXMP = TMP%(4): MP = TMP%(5)
  998. 27160     PWR = TMP%( 6) : SBY = TMP%( 7) : MGC = TMP%( 8)
  999. 27170     WPN = TMP%( 9) : ARM = TMP%(10) : SLD = TMP%(11)
  1000. 27180     EX  = TMP%(12) : GLD = TMP%(13)
  1001. 27190     ALMAPS = TMP%(14) : SMAPX = TMP%(15) : SMAPY = TMP%(16)
  1002. 27200     for I = 1 to STRYMAX  
  1003. 27210       STRYFLG%(I) = TMP%(I+16)
  1004. 27220     next I 
  1005. 27230     gosub *SET_MAPPOINT
  1006. 27240     gosub *SET_SPRPOINT
  1007. 27250     if DBM <> 4 then gosub *READ_MAP
  1008. 27260     if FILEN = 0 and DEMO = 1 then 
  1009. 27270       HP = MAXHP 
  1010. 27280       MP = MAXMP 
  1011. 27290       SCPFILE$ = syscfg$(61)
  1012. 27300       gosub *SCRPT_RUN
  1013. 27310       MENULP = 0 
  1014. 27400     endif
  1015. 27410     if DBM <> 4 then 
  1016. 27420       SND = 1
  1017. 27430       gosub *DEL_POWER 
  1018. 27440       gosub *DRAW_POWER
  1019. 27450     endif
  1020. 27460     gosub *INT_SFLG
  1021. 27470   endif  
  1022. 27480 return
  1023. 27490 '
  1024. 27500 '/* ---<<ノート保存本体>>--- */
  1025. 27510 *MainSAVENOTE
  1026. 27520   gosub *INT_SFLG
  1027. 27530   if FILEN <> 0 then 
  1028. 27540     MSG$ = "只今ノートを記録中です♪@th@wh" : gosub *PUT_MES 
  1029. 27550     FILE$ = savef$ + "SP_SAV" + mid$( str$( FILEN ),2 ) + ".RCY"
  1030. 27570     kill FILE$
  1031. 27580     FLNO% = 1
  1032. 27590     TMP%( 0) = 9107
  1033. 27600     TMP%( 1) = LV  
  1034. 27610     TMP%( 2) = MAXHP : TMP%( 3) = HP 
  1035. 27620     TMP%( 4) = MAXMP : TMP%( 5) = MP 
  1036. 27630     TMP%( 6) = PWR : TMP%( 7) = SBY : TMP%( 8) = MGC 
  1037. 27640     TMP%( 9) = WPN : TMP%(10) = ARM : TMP%(11) = SLD 
  1038. 27650     TMP%(12) = EX  : TMP%(13) = GLD 
  1039. 27660     TMP%(14) = ALMAPS : TMP%(15) = SMAPX : TMP%(16) = SMAPY 
  1040. 27670     for I = 1 to STRYMAX 
  1041. 27680       TMP%(I+16) = STRYFLG%(I) 
  1042. 27690     next I 
  1043. 27700     on error goto *ERR_RESUME 
  1044. 27710     open FILE$ for output as #FLNO% 
  1045. 27720       for I = 0 to 16 + STRYMAX 
  1046. 27730         write#FLNO%,TMP%(I) 
  1047. 27740       next I 
  1048. 27750     close #FLNO% 
  1049. 27760     on error goto *ERR_END 
  1050. 27770   else 
  1051. 27780     MSG$ = "@rd0番のノートには記録できないんで~す。▼" 
  1052. 27790     gosub *PUT_MES
  1053. 27800     MSG$ = "@rdもう一度別のノートを選んでねっ! ▼@wh" 
  1054. 27810     gosub *PUT_MES
  1055. 27820   endif
  1056. 27830 return
  1057. 27840 '
  1058. 30000 '+--================--+
  1059. 30010 '|○ 戦闘モジュール ○|
  1060. 30020 '|○                ○|
  1061. 30040 '+--================--+
  1062. 30100 /* ---<< ザコ >>--- */
  1063. 30110 *BATTLE
  1064. 30120  if ENDS = 0 then
  1065. 30130    if MNSON = 1 then
  1066. 30140      gosub *BTL_SET 
  1067. 30150      gosub *BTL_MAIN
  1068. 30160    endif
  1069. 30170  endif
  1070. 30180 return
  1071. 30190 '
  1072. 30200 '/* ---<< ボス >>--- */
  1073. 30210 *NBOSBTL
  1074. 30220   if ENDS = 0 then
  1075. 30230     BOSS = 1
  1076. 30240     gosub *BTL_BOSSSET
  1077. 30250     gosub *BTL_MAIN
  1078. 30260     BOSS = 0
  1079. 30270   endif
  1080. 30280 return
  1081. 30290 '
  1082. 30300 '/* ---<< ラスボス >>--- */
  1083. 30310 *LBOSBTL
  1084. 30320   if ENDS = 0 then
  1085. 30330     BOSS = 2
  1086. 30340     gosub *BTL_BOSSSET
  1087. 30350     gosub *BTL_MAIN
  1088. 30360     BOSS = 0
  1089. 30370   endif
  1090. 30380 return
  1091. 30390 '
  1092. 30700 '/* ---<<戦闘準備>>--- */
  1093. 30710 *BTL_SET
  1094. 30720   MACNO = ZKBMAC
  1095. 30730   gosub *RUN_MAC
  1096. 30740 return
  1097. 30750 '
  1098. 30800 '/* ---<< ボス戦闘準備 >>--- */
  1099. 30810 *BTL_BOSSSET
  1100. 30820   MACNO = BSBMAC
  1101. 30830   gosub *RUN_MAC
  1102. 30840   MSLV   =     99
  1103. 30850   MSHP   = MSMXHP
  1104. 30860   MSTNF  =      1
  1105. 30870   ZKSET  =      0
  1106. 30880 return
  1107. 30890 '
  1108. 31000 '/* ---<< 戦闘開始 >>--- */
  1109. 31010 *BTL_MAIN
  1110. 31020   if CMDNO > BTLMAX% then CMDNO = 1 
  1111. 31030   sprite 0,BCHR%(0,1),1 
  1112. 31040   gosub *SPRSET_MONSTER
  1113. 31050   gosub *SETPS_SPR_MONSTER
  1114. 31060   gosub *SETPS_SPR_SJ
  1115. 31070   MSA = 1 
  1116. 31080   while MSA = 1 
  1117. 31090     gosub *CDREP
  1118. 31100     MSG$ = "どうする?    [行動選択]@th" 
  1119. 31110     gosub *PUT_MES
  1120. 31120     MXCMD  = BTLMAX%
  1121. 31130     TIFSET = 1
  1122. 31140     CNSLON = 0
  1123. 31150     gosub *SPMENUR
  1124. 31160     gosub *ITX
  1125. 31170     if MSA = 1 then 
  1126. 31180       if BOSS = 1 then gosub *BTL_BOS_WPNSEL
  1127. 31190       MACNO = val( syscfg$(64) )
  1128. 31200       gosub *RUN_MAC
  1129. 31210     endif
  1130. 31220   wend
  1131. 31300   if ENDS <> 1 then
  1132. 31310     if BOSS = 1 then gosub *BTL_BOS_ENDMES
  1133. 31320     gosub *DIE_MONSTER
  1134. 31330     CDNO = CDBG 
  1135. 31340     gosub *CDPLY
  1136. 31350     if MSA = 3 then 
  1137. 31360       MSG$ = "うまく逃げ出せた!  ▼" : gosub *PUT_MES 
  1138. 31370     else
  1139. 31380       gosub *EXGLDUP
  1140. 31390       gosub *STSUP
  1141. 31400       gosub *LVUP 
  1142. 31410     endif 
  1143. 31440   endif
  1144. 31450   sprite 0,BCHR%(0,1),0
  1145. 31460   MSG$ = ""
  1146. 31470   gosub *PUT_MES
  1147. 31480   gosub *FADE_DISPMAP
  1148. 31490   gosub *CHR_ON
  1149. 31500 return
  1150. 31510 '
  1151. 32000 '+--====================--+
  1152. 32010 '|○ 戦闘サブモジュール ○|
  1153. 32030 '+--====================--+
  1154. 32090 '/* ---<< コマンド実行 >>--- */
  1155. 32100 *ITX
  1156. 32110   if STRYFLG%( BTLMCMD%(CMDNO,1) ) = 1 then
  1157. 32120     MACNO = BTLMCMD%(CMDNO,0)
  1158. 32130     gosub *RUN_MAC
  1159. 32140   else
  1160. 32150     gosub *DONT_USE
  1161. 32170   endif
  1162. 32180 return
  1163. 32190 '
  1164. 32200 '/* ---<< モンスターのスプライト設定 >>--- */
  1165. 32210 *SPRSET_MONSTER
  1166. 32220   if MSSIZE = 1 then
  1167. 32230     if ZKSET = 0 then
  1168. 32240       load@ sysf$ + MSTIF$,(320,  0)
  1169. 32250       gosub *TOKA
  1170. 32260       BX = 320 
  1171. 32270       BY =   0 
  1172. 32280       OFSET = ST_MS1SPR%
  1173. 32290       gosub *SPRSET_4
  1174. 32300     endif
  1175. 32310     if DEFSPR_MONS1 = 0 then
  1176. 32320       def sprite 1,BCHR%(1,1),(  0,240),BCHR%(1,0),2,2
  1177. 32330       DEFSPR_MONS1 = 1
  1178. 32340     endif
  1179. 32350     sprite 0,BCHR%(1,1),1
  1180. 32360     sprite 1,BCHR%(1,1),ST_MS1SPR%
  1181. 32380   else if MSSIZE = 2 then
  1182. 32390     load@ sysf$ + MSTIF$,(320,  0)
  1183. 32400     gosub *TOKA
  1184. 32410     BX = 320 
  1185. 32420     BY =   0 
  1186. 32430     OFSET = ST_MS2SPR%
  1187. 32440     gosub *SPRSET_16
  1188. 32450     if DEFSPR_MONS2 = 0 then
  1189. 32460       def sprite 1,BCHR%(2,1),(  0,240),BCHR%(2,0),4,4
  1190. 32470       DEFSPR_MONS2 = 1
  1191. 32480     endif
  1192. 32490     sprite 0,BCHR%(2,1),1
  1193. 32500     sprite 1,BCHR%(2,1),ST_MS2SPR%
  1194. 32520   else if MSSIZE = 3 then
  1195. 32630     load@ sysf$ + MSTIF$,(320,  0)
  1196. 32640     gosub *TOKA
  1197. 32650     BX = 320 
  1198. 32660     BY =   0 
  1199. 32670     OFSET = ST_MS3SPR%
  1200. 32680     gosub *SPRSET_81
  1201. 32690     if DEFSPR_MONS3 = 0 then
  1202. 32700       def sprite 1,BCHR%(3,1),(  0,240),BCHR%(3,0),9,9
  1203. 32710       DEFSPR_MONS3 = 1
  1204. 32720     endif
  1205. 32730     sprite 0,BCHR%(3,1),1
  1206. 32740     sprite 1,BCHR%(3,1),ST_MS3SPR%
  1207. 32760   endif
  1208. 32780 return
  1209. 32790 '
  1210. 33000 '/* ---戦闘終了時処理--- */
  1211. 33010 *EXGLDUP
  1212. 33020   sprite 1,BCHR%(0,1),BWINPTN%
  1213. 33030   TMP%(9)    = MSEXP - LV 
  1214. 33040   if TMP%(9) < 1 then TMP%(9) = 1
  1215. 33050   GLD = GLD + MSGLD 
  1216. 33060   EX  = EX  + TMP%(9) 
  1217. 33070   MSG$ = "@whモンスター達をやっつけた!  ▼"     : gosub *PUT_MES
  1218. 33080   MSG$ = "経験値" + str$( TMP%(9) )+"を獲得! ▼": gosub *PUT_MES
  1219. 33090   MSG$ = str$(MSGLD) + "Gを手に入れた。▼"      : gosub *PUT_MES
  1220. 33100   gosub *PUT_EXGLD 
  1221. 33110   gosub *INT_BTLSPR
  1222. 33120 return
  1223. 33130 '
  1224. 33300 '/* ---<< 7000G 獲得おめでたう >>--- */
  1225. 33310 *STSUP
  1226. 33320  if GLD => 7000 then 
  1227. 33330    MEST = 1 
  1228. 33350    MSG$ = "@mzパンパカパ~ン! 7000G獲得おめでとうございま~す! ▼" 
  1229. 33360    gosub *PUT_MES
  1230. 33370    MSG$ = "記念に、レベルアップを差し上げま~す。▼": gosub *PUT_MES
  1231. 33330    MEST = 0 
  1232. 33350    EX   = LV * 11 + 1 
  1233. 33360    GLD = 0
  1234. 33370  endif
  1235. 33380 return
  1236. 33390 '
  1237. 33500 '/* ---<<レベルアップ>>--- */
  1238. 33510 *LVUP 
  1239. 33520   if EX => LV * 11 then 
  1240. 33530     ' ファンファーレ・・・・を作りたいけど難しい!
  1241. 33540     ' 作って下さる方いらっしゃいませんか? ご連絡下さい。
  1242. 33550     MSG$ = "@wh#NMはレベルアップした! ▼" : gosub *PUT_MES
  1243. 33560     LV = LV + 1 
  1244. 33570     MAXHP = MAXHP + int( RND * 5 ) + 4
  1245. 33600     if MAXHP > 179 then MAXHP = 179   
  1246. 33610     MAXMP = MAXMP + int( RND * 5 ) + 4
  1247. 33620     if MAXMP > 179 then MAXMP = 179
  1248. 33630     PWR   = PWR + int( RND * 4 ) + 2
  1249. 33640     if PWR > 99 then PWR = 99 
  1250. 33650     SBY   = SBY + int( RND * 4 ) + 2
  1251. 33670     if SBY > 99 then SBY = 99 
  1252. 33680     MGC   = MGC + int( RND * 4 ) + 2
  1253. 33690     if MGC > 99 then MGC = 99 
  1254. 33700     tmp$(9) = "になったぁ! ▼@st"
  1255. 33710     MSG$ = "#NMはLevel#LV になったぁ! ▼@st" : gosub *PUT_MES
  1256. 33720     MSG$ = "最大HPが" + str$(MAXHP) + TMP$(9) : gosub *PUT_MES
  1257. 33730     MSG$ = "最大MPが" + str$(MAXMP) + TMP$(9) : gosub *PUT_MES
  1258. 33740     MSG$ = "体力が  " + str$(PWR) + TMP$(9) : gosub *PUT_MES
  1259. 33750     MSG$ = "素早さが" + str$(SBY) + TMP$(9) : gosub *PUT_MES
  1260. 33760     MSG$ = "魔法力が" + str$(MGC) + TMP$(9) : gosub *PUT_MES
  1261. 33770     EX = 0 
  1262. 33780     gosub *PUT_EXGLD
  1263. 33790     HP = MAXHP
  1264. 33800     MP = MAXMP
  1265. 33810     SND = 1   
  1266. 33820     gosub *DEL_POWER 
  1267. 33830     gosub *DRAW_POWER
  1268. 33850   endif
  1269. 33880 return
  1270. 33890 '
  1271. 34000 '/* --- ボスの死んだ時のセリフ --- */
  1272. 34010 *BTL_BOS_ENDMES
  1273. 34020 return
  1274. 34030 '
  1275. 34040   for BBEM = 1 TO MESX_END  'デバッグが応募に間に合いませんでした(泣)
  1276. 34050     CMDL$ = BSEND$(I)       'なぜかエラーがでちゃう・・・・(T_T)
  1277. 34060     gosub *SCP_MAIN         'なお、このデータ読み込みは削りました.
  1278. 34070   next BBEM
  1279. 34080 return  
  1280. 34090 '
  1281. 34200 '/* ---<< ボスの攻撃方法選択>>--- */
  1282. 34210 *BTL_BOS_WPNSEL
  1283. 34220   CMDL$ = BSMES$(MSTNF)
  1284. 34240   gosub *SCP_MAIN
  1285. 34250   MSTNF = MSTNF + 1 
  1286. 34260   if MSTNF > MEX then MSTNF = 1 
  1287. 34270   I = ( rnd*6 ) + 1 
  1288. 34280   BSWPN$(0) = BSWPN$(I)
  1289. 34290   MSATP     = BSWPP%(I)
  1290. 34300 return
  1291. 34310 '
  1292. 34500 '/* ---<<モンスター選択>>--- */
  1293. 34510 *MST_SEL 
  1294. 34520   OLDMSTIF$ = MSTIF$ 
  1295. 34530   I = int( RND * 8 ) + 1 
  1296. 34540   if ZST <> 0 then I = ZST
  1297. 34550   MSNAME$ = MSNMD$(I)
  1298. 34560   MSLV    =  MSLVD(I) : MSMXHP=MSMXHPD(I)
  1299. 34570   MSEXP   = MSEXPD(I) : MSGLD = MSGLDD(I)
  1300. 34580   MSATP   = MSATPD(I) : MSDFP =  MSDFD(I)
  1301. 34590   CLJ     =   CLJD(I)
  1302. 34600   MSTIF$  =MSTIFD$(I)
  1303. 34610   MSSIZE  = MSSIZD(I)
  1304. 34620   MSHP    = MSMXHP   
  1305. 34630   if MSTIF$ = OLDMSTIF$ then ZKSET = 1 else ZKSET = 0 
  1306. 34640 return 
  1307. 34650 '
  1308. 37000 '+---=======================---+
  1309. 37010 '|○     ステータス表示      ○|
  1310. 37030 '+---=======================---+
  1311. 37040 *Main_Puts_States
  1312. 37050 *Main_STSView
  1313. 37100   gosub *INT_PAD 
  1314. 37110   gosub *DISP_MAP
  1315. 37120   MJC  = 1
  1316. 37130   gosub *FADE_PASTEL
  1317. 37140   MSG$ = "@gr@th<< ステータス表示 >>" 
  1318. 37150   gosub *PUT_MES
  1319. 37160   if EXCLAS => 1 then gosub *SBUF_IN
  1320. 37200   symbol ( 36, 17),"<<■ メインステータス ■>>",S!,S!,7,,,1 
  1321. 37210   symbol ( 36, 30),"名前  :" + NAM$       ,S!,S!,7
  1322. 37220   symbol ( 36, 43),"Level:" + str$(LV)   ,S!,S!,7
  1323. 37230   symbol ( 36, 56),"HP  :" + str$(HP)   ,S!,S!,7
  1324. 37240   symbol ( 36, 69),"最大HP:" + str$(MAXHP),S!,S!,7
  1325. 37250   symbol ( 36, 82),"MP  :" + str$(MP)   ,S!,S!,7
  1326. 37260   symbol ( 36, 95),"最大MP:" + str$(MAXMP),S!,S!,7
  1327. 37270   symbol ( 36,108),"体力  :" + str$(PWR),S!,S!,7
  1328. 37280   symbol ( 36,121),"素早さ:" + str$(SBY),S!,S!,7
  1329. 37290   symbol ( 36,134),"魔法力:" + str$(MGC),S!,S!,7
  1330. 37300   symbol ( 36,147),"攻撃  :" + B_ITEM$(WPN),S!,S!,7
  1331. 37310   symbol ( 36,160),"防御  :" + B_ITEM$(ARM+10),S!,S!,7
  1332. 37320   symbol ( 36,173),"シールド :" + B_ITEM$(SLD+20),S!,S!,7
  1333. 37330   PADSET = 0 
  1334. 37340   gosub *WAIT_PAD
  1335. 37350   gosub *INT_PAD 
  1336. 37360   wait SYSWAIT
  1337. 37370   if EXCLAS => 1 then
  1338. 37380     gosub *SBUF_OUT
  1339. 37390   else
  1340. 37400     gosub *DISP_MAP
  1341. 37410     MJC  = 1
  1342. 37420     gosub *FADE_PASTEL
  1343. 37430   endif
  1344. 37440   symbol ( 36, 18),"<<■ 戦闘時コマンド使用状況 ■>>",S!,S!,7,,,1 
  1345. 37450   for I = 4 to 14
  1346. 37460     if STRYFLG%( BTLMCMD%(I,1) ) = 1 then 
  1347. 37470       TMM$="使えます." 
  1348. 37480     else
  1349. 37490       TMM$="使えません."
  1350. 37500     endif
  1351. 37510     symbol ( 36, 18 + (I-3)*14 ),BTLM_SUB$(I) + ":" + TMM$,S!,S!,7 
  1352. 37520   next I 
  1353. 37530   PADSET = 0
  1354. 37900   gosub *WAIT_PAD
  1355. 37910   gosub *INT_PAD 
  1356. 37920   if EXCLAS => 1 then gosub *SBUF_OUT else gosub *FADE_DISPMAP
  1357. 37930   gosub *DISP_MAP
  1358. 37940   wait SYSWAIT
  1359. 37950 return 
  1360. 37960 ' 
  1361. 38000 '+--================--+
  1362. 38010 '|○    フェード    ○|
  1363. 38020 '+--================--+
  1364. 38030 '/* ---<<全画面消去>>--- */
  1365. 38040 *FADE_1
  1366. 38050   for I = 0 to 119
  1367. 38060     line (  I,  I) - (319-I,239-I),pset,[0,0,0],b
  1368. 38070   next I 
  1369. 38080 return 
  1370. 38090 '
  1371. 38200 '/* ---<<全画面回転消去>>--- */
  1372. 38210 *FADE_2
  1373. 38220   gosub *MBUF_IN
  1374. 38230   for I = 0 to 119
  1375. 38240     put@a (  I,  I) - (319-I,239-I),GRP%
  1376. 38250     line  (  I,  I) - (319-I,239-I),pset,[0,0,0],b
  1377. 38260   next I
  1378. 38270 return
  1379. 38280 '
  1380. 38300 '/* ---<<移動領域消去)>>--- */
  1381. 38310 *FADE_3
  1382. 38330   for I = 0 to 88
  1383. 38340     line  (32+I,16+I) - (287-I,191-I),pset,[0,0,0],b
  1384. 38350   next I
  1385. 38370 return
  1386. 38390 '
  1387. 38400 '/* ---<<中央回転消去>>--- */
  1388. 38410 *FADE_4
  1389. 38420   get@a ( 32, 16) - (287,191),GRP%
  1390. 38430   for I = 0 to 88
  1391. 38440     put@a ( 32+I, 16+I) - ( 287-I, 191-I),GRP%
  1392. 38450     line  ( 32+I, 16+I) - ( 287-I, 191-I),pset,[0,0,0],b
  1393. 38460   next I
  1394. 38470 return
  1395. 38480 '
  1396. 38500 '/* <<to粗モザイク>>--- */
  1397. 38510 *FADE_5
  1398. 38520   if EXCLAS = 0 then return
  1399. 38530   gosub *SBUF_IN
  1400. 38540   SPEED = 2
  1401. 38550   for Z = 2 to 32 step SPEED
  1402. 38560     gosub *MOZAIC
  1403. 38570   next Z
  1404. 38580 return
  1405. 38590 '
  1406. 38600 '/* <<to細モザイク>>--- */
  1407. 38610 *FADE_6
  1408. 38620   if EXCLAS = 0 then return
  1409. 38630   SPEED = 2
  1410. 38640   for Z = 32 to 2 step -SPEED
  1411. 38650     gosub *MOZAIC
  1412. 38660   next Z
  1413. 38670   gosub *SBUF_OUT
  1414. 38680 return
  1415. 38690 '
  1416. 38700 '/* 全体表示
  1417. 38710 *FADE_7
  1418. 38720   for I = 119 to 0 step -1
  1419. 38730     line  (  I,  I) - (319-I,239-I),pset,[0,0,0],b
  1420. 38740     put@a (  I,  I) - (319-I,239-I),GRP%
  1421. 38750   next I
  1422. 38770 return
  1423. 38790 '
  1424. 38800 '/* 8
  1425. 38810 *FADE_8 
  1426. 38820   for I = 0 to 10 
  1427. 38830     for J = 0 to 15 
  1428. 38840       line (32,I*16+J)-(287,I*16+J),pset,MJC,b
  1429. 38850     next J 
  1430. 38860   next I 
  1431. 38870 return 
  1432. 38890 '
  1433. 38900 '/* 9
  1434. 38910 *FADE_9
  1435. 38920   pastel 255
  1436. 38930   MJC  = 0
  1437. 38950   gosub *FADE_PASTEL
  1438. 38960 return
  1439. 38990 '
  1440. 39000 '/* □■○●▽▼ 小物サブルーチン群 ▼▽●○■□ */
  1441. 39010 '
  1442. 39020 '/* ---<<リザーブドメッセージ>>--- */
  1443. 39030 *RESVD
  1444. 39040   MSG$ = "@mzごめんなさい! まだ作ってないの(T_T) ▼@wh"
  1445. 39060   gosub *PUT_MES
  1446. 39080 return
  1447. 39090 '
  1448. 39100 '/* ---<<パッド入力待ち>>--- (PADSET) */
  1449. 39110 *WAIT_PAD 
  1450. 39120  gosub *INT_PAD
  1451. 39130  while PT = 0  
  1452. 39140    wait PADWAIT
  1453. 39150    gosub *INP_PAD
  1454. 39160    if PADSET = 5 and PT  = 1 then PT =  0  'Aボタンは不可
  1455. 39170    if PADSET = 4 and PT  = 2 then PT =  0  'Bボタンは不可
  1456. 39180    if PADSET = 3 and PD <> 0 then PT = 99  'カーソルボタンでも可
  1457. 39190    if PADSET = 2 then
  1458. 39200      if BTSET <> 0 then PT = 99
  1459. 39210      if PD    <> 0 then PT = 99
  1460. 39220    endif
  1461. 39230  wend 
  1462. 39240  gosub *SND_PAD
  1463. 39250  PADSET = 0
  1464. 39260 return 
  1465. 39270 '
  1466. 39300 '/* ---<<PAD入力検出ウェイト>>--- */
  1467. 39310 *WAITX
  1468. 39320  for I = 0 to WAITES 
  1469. 39330    if ptrig(PORT) <> 0 then 
  1470. 39340      I = WAITES - 1 : gosub *SND_PAD 
  1471. 39350    endif 
  1472. 39360    wait 1
  1473. 39370  next I
  1474. 39380 return 
  1475. 39390 '
  1476. 39400 '/* ---<<パッド管理>>--- */
  1477. 39410 *INT_PAD
  1478. 39420   PT = 0
  1479. 39430   PD = 0
  1480. 39440 return
  1481. 39450 '
  1482. 39500 '/* ---<<スキャンモード変更>>--- */
  1483. 39510 *ScanChg
  1484. 39520   if SCAN = 1 then
  1485. 39530     SCAN = 0 
  1486. 39540     sprite on
  1487. 39550     sprite screen (32,0)
  1488. 39560   else 
  1489. 39570     SCAN = 1 
  1490. 39580     gosub *SCRN_CHANGE
  1491. 39590   endif  
  1492. 39600   wait 20
  1493. 39610 return   
  1494. 39620 '
  1495. 39630 '/* ---<< PAD >>--- */
  1496. 39640 *INP_PAD
  1497. 39660   PT = ptrig(PORT)
  1498. 39670   PD =   pad(PORT)
  1499. 39680 return
  1500. 39690 '
  1501. 39700 '/* ---<<スプライトON>>--- */
  1502. 39710 *Sys_SpriteOn
  1503. 39720 *SPR_ON 
  1504. 39730   sprite on 
  1505. 39740   if SCAN = 0 then sprite screen (32,0)
  1506. 39750   if SCAN = 1 then gosub *SCRN_CHANGE  
  1507. 39770 return 
  1508. 39780 '
  1509. 39800 '/* ---<<目玉TOWNSウェイト解除機能>>--- */
  1510. 39810 *Sys_WaitSet 
  1511. 39820  if HDWAIT = 1 then 
  1512. 39830    M = inp(&H0031)            '機種判定
  1513. 39840    if M = 1 then out &H05E0,2
  1514. 39850    if M = 2 then out &H05E2,1
  1515. 39860    if M = 4 then out &H05E2,0
  1516. 39870  endif 
  1517. 39880 return 
  1518. 39890 '
  1519. 39900 '/* ---<<パッド入力サウンド>>--- */
  1520. 39910 *SND_PAD
  1521. 39920   if PADSND = 1 then beep 363523,2,900
  1522. 39930 return 
  1523. 39940 '
  1524. 39950 '/* ---<<画面枠をロードする>>--- */
  1525. 39960 *DRW_WAKU 
  1526. 39970   load@ SYSF$ + WAKUFILE$,(  0,  0) 
  1527. 39980 return 
  1528. 39990 '
  1529. 40000 '/* ---<<CG画面OFF・ON>>--- */
  1530. 40010 *CG_OFF
  1531. 40020   out &hFDA0,&H3,1
  1532. 40030 return
  1533. 40040 '
  1534. 40050 *CG_ON
  1535. 40060   out &hFDA0,&HF,1
  1536. 40070 return
  1537. 40080 '
  1538. 40100 '/* ---<<FAST-ON・OFF>>--- */
  1539. 40110 *FAST_ON
  1540. 40120   if FAST = 1 then 
  1541. 40130     out &H5EC,1
  1542. 40140   endif 
  1543. 40150 return
  1544. 40160 '
  1545. 40170 *FAST_OFF
  1546. 40180   if FAST = 1 then 
  1547. 40190     out &H5EC,0
  1548. 40200   endif 
  1549. 40210 return
  1550. 40220 '
  1551. 40240 '/* --<<メニューコマンド実行拒否>>-- */
  1552. 40250 *DONT_USE
  1553. 40260   MSG$ = "@mzこのコマンドは現在使用できません!@wh"
  1554. 40270   gosub *PUT_MES
  1555. 40280 return
  1556. 40290 '
  1557. 40300 '/* ---<< 使用マップパターン変更 >>--- */
  1558. 40310 *RESET_PTN
  1559. 40320   if OLDPTN <> PTNNUM then  
  1560. 40330     FILE$ = PTNBANK$(PTNNUM)
  1561. 40340     gosub *MAKE_PTN_1 
  1562. 40350     if DBM = 4 then TPSET = 0
  1563. 40360   endif 
  1564. 40370 return
  1565. 40380 '
  1566. 40400 '/* ---<<CHROFF・ON>>--- */
  1567. 40410 *CHR_OFF
  1568. 40420   sprite 0,MCHR%(0,1),0
  1569. 40430 return
  1570. 40440 '
  1571. 40450 *CHR_ON
  1572. 40460   sprite 0,MCHR%(0,1),1 
  1573. 40470 return
  1574. 40480 '
  1575. 40500 '/* ---<<イベント起動補助>>--- */
  1576. 40510 *EVENT
  1577. 40530   TMP = MAP_DATA%(SMAPX,SMAPY) 
  1578. 40540   if TMP <= EVPTN and TMP > HDPTN then gosub *CHK_EVENT
  1579. 40550 return
  1580. 40560 '
  1581. 40600 '/* ---<<スクリーン初期化>>--- */
  1582. 40610 *INT_SCN
  1583. 40620   screen@ 1
  1584. 40630   window (  0,  0) - (511,255)
  1585. 40640   view   (  0,  0) - (511,255)
  1586. 40650 return
  1587. 40660 '
  1588. 40700 '/* ---<<CD演奏>>--- */
  1589. 40710 *CDPLY 
  1590. 40720   if CDBF = 1 then 
  1591. 40730     cdinf CDTMP%  
  1592. 40740     if CDTMP%(1) <> 2 then cd play BGMN%(CDNO) 
  1593. 40740   endif
  1594. 40750 return 
  1595. 40760 '
  1596. 40800 '/* ---<<CDリピート>>--- */
  1597. 40820 *CDREP
  1598. 40830   if CDBF = 1 then
  1599. 40840     CDSTAT CDTMP% 
  1600. 40850     if CDTMP%(1) = 0 then gosub *CDPLY 
  1601. 40860   endif 
  1602. 40870 return 
  1603. 40890 '
  1604. 40900 '/* ---<<CD停止>>--- */
  1605. 40910 *CDSTOP
  1606. 40920   if CDBF = 1 then cd stop
  1607. 40930 return 
  1608. 40940 '
  1609. 41000 '/* ---<< パステル総合制御 >>--- /*
  1610. 41010 *FADE_PASTEL
  1611. 41020   if TYPE = 0 then 
  1612. 41030     for Y = 0 to 175 step 2
  1613. 41040       line ( 32, 16+Y) - (287, 16+Y),pastel,MJC,b
  1614. 41050       line ( 32,191-Y) - (287,191-Y),pastel,MJC,b
  1615. 41060     next Y
  1616. 41070   else if TYPE = 1 then
  1617. 41080     for Y = 0 to 239 step 2
  1618. 41090       line (  0,    Y) - (319,    Y),pastel,MJC,b
  1619. 41100       line (  0,239-Y) - (319,239-Y),pastel,MJC,b
  1620. 41110     next Y
  1621. 41120   endif
  1622. 41130   pastel 128
  1623. 41140   TYPE = 0
  1624. 41150   MJC  = 7
  1625. 41160 return
  1626. 41170 '
  1627. 41200 '/* ---<< BEEP-Sound >>--- */
  1628. 41210 *SND_ATTACK
  1629. 41220   for I = 300 to 900
  1630. 41230     beep 363523,1,I
  1631. 41240   next I 
  1632. 41250 return
  1633. 41260 '
  1634. 41300 *SND_HEALING
  1635. 41310   for I = 600 to 1300 step 2 
  1636. 41320     beep 363523,1, I 
  1637. 41330   next I
  1638. 41340 return
  1639. 41350 '
  1640. 41400 *SND_DAMAGE
  1641. 41410   for I = 100 to 600
  1642. 41420     beep 363523,1, I 
  1643. 41430   next I
  1644. 41440 return
  1645. 41450 '
  1646. 41500 *SND_BOOT98
  1647. 41510   beep 363523,20,1000
  1648. 41520   wait 10
  1649. 41530   beep 363523,20, 500
  1650. 41540 return
  1651. 41550 '
  1652. 41600 '/* ---<< HP/MP描画>>--- */
  1653. 41610 *DRAW_POWER
  1654. 41620   gosub *DRAW_HP
  1655. 41630   gosub *DRAW_MP
  1656. 41640 return 
  1657. 41650 ' 
  1658. 41700 '/* ---<< HP/MPメーター消去 >>--- */
  1659. 41710 *DEL_POWER
  1660. 41720   line (  5, 10) - ( 13,189-HP),pset,0,bf
  1661. 41730   line ( 16, 10) - ( 21,189-MP),pset,0,bf
  1662. 41740 return
  1663. 41750 '
  1664. 41800 '/* ---<< HP描画>>--- */
  1665. 41810 *DRAW_HP 
  1666. 41820   for I = 0 to HP
  1667. 41830     line (  5,189-I) - (13,189-I),pset,[I+76,179-I,0],bf
  1668. 41840     if SND = 1 then beep 363523,1,1000
  1669. 41850   next I
  1670. 41870 return  
  1671. 41890 '
  1672. 41900 '/* ---<< MP描画>>--- */
  1673. 41910 *DRAW_MP
  1674. 41920   for I = 0 to MP
  1675. 41930     line ( 16,189-I) - (21,189-I),pset,[0,I+76,179-I],bf
  1676. 41940     if SND = 1 then beep 363523,1,1500
  1677. 41950   next I
  1678. 41970 return  
  1679. 41990 '
  1680. 42000 '/* ---<<キー入力>>--- */
  1681. 42010 *Key_Input
  1682. 42020   K$ = "" 
  1683. 42030   while K$ = "" 
  1684. 42040     K$ = input$(1)
  1685. 42050   wend
  1686. 42060 return
  1687. 42070 '
  1688. 42100 '/* ---<< FMTOWNSIIモード切替 >>--- */
  1689. 42110 *FASTCHG 
  1690. 42120  if FAST = 1 then  
  1691. 42130    TMP = inp(&H5EC)
  1692. 42140    if FMODE = 0 then out &H5EC,0  '互換モード
  1693. 42150    if FMODE = 1 then out &H5EC,1  '高速モード
  1694. 42160  endif 
  1695. 42170 return 
  1696. 42180 '
  1697. 42200 '/* ---<< 武器読込 >>--- */
  1698. 42210 *LOAD_WEPON
  1699. 42220   load@ sysf$ + WEPONFILE$ , (320,  0)
  1700. 42230   gosub *TOKA
  1701. 42240   for WY = 0 to 3
  1702. 42250     for WX = 0 to 11
  1703. 42260       OFSET = ST_WPNSPR% + ( WY*12 + WX ) * 4
  1704. 42270       BX = WX * 16 + 320
  1705. 42280       BY = WY * 16
  1706. 42290       gosub *SPRSET_1
  1707. 42300     next WX
  1708. 42310   next WY
  1709. 42320 return
  1710. 42330 '
  1711. 42500 '/* ---<<お金と経験値の表示>>--- */
  1712. 42510 *PUT_EXGLD
  1713. 42520   MSG$ = "@whLevel:#LV.  #GLGold.  #EXExp. ▼"
  1714. 42530   gosub *PUT_MES
  1715. 42540 return
  1716. 42550 '
  1717. 42600 '/* ---<<デバッグモード設定>>--- */
  1718. 42610 *Debug_ModeSet
  1719. 42620   if EDIT_ON = 7 then
  1720. 42630     PT = ptrig(PORT)
  1721. 42640     if PT = 1 then DBM = 1
  1722. 42650     if PT = 8 then DBM = 4
  1723. 42660     if DBM <> 0 then print DBM
  1724. 42670   endif
  1725. 42680 return
  1726. 42690 '
  1727. 42700 '/* ---<< 戦闘背景表示 >>--- */
  1728. 42710 *LOAD_BTLBACK
  1729. 42720   if BKSET = 0 then
  1730. 42730     load@ sysf$ + BACKBANK$(BACKNO),(320,  0) 
  1731. 42740     get@a (320,  0) - (447, 87),BTLBACK%
  1732. 42750     BKSET = 1 
  1733. 42760   endif  
  1734. 42770   put@a ( 32, 16) - (159,103),BTLBACK%,pset,2,2
  1735. 42780 return
  1736. 42790 
  1737. 42800 '/* ---<< 画面表示 >>--- */
  1738. 42810 *DISP_MAP
  1739. 42820   gosub *MBIN_MAP
  1740. 42830   put@a ( 32, 16) - (287,191),GRP%
  1741. 42840   OFSET = 0
  1742. 42850 return
  1743. 42860 '
  1744. 42900 '/* ---<<フェード付画面表示>>--- */
  1745. 42910 *FADE_DISPMAP 
  1746. 42920   gosub *MBIN_MAP
  1747. 42930   for I = 0 to 175 step 2
  1748. 42940     put@a ( 32, 16+I) - (287, 16+I),GRP%,,,,,     I *256 
  1749. 42950     put@a ( 32,191-I) - (287,191-I),GRP%,,,,,(175-I)*256 
  1750. 42960   next I 
  1751. 42970 return 
  1752. 42980 '
  1753. 43000 '/* ---<<マップフィールドをメインバッファに転送>>--- */
  1754. 43010 *MBIN_MAP
  1755. 43020   gosub *FAST_ON
  1756. 43030   for Y = 0 to 10
  1757. 43040     CY = VWMAPY * (MAPY-1) + Y + 1
  1758. 43050     for X = 0 to 15
  1759. 43060       CX = VWMAPX * (MAPX-1) + X + 1
  1760. 43070       put@a (X*16,240) - (X*16+15,255),MAP_PTN%,,,,,256*MAP_DATA%(CX,CY)
  1761. 43090     next X
  1762. 43100     get@a (  0,240) - (255,255),GRP%,Y*4096 
  1763. 43110   next Y 
  1764. 43120   gosub *FAST_OFF
  1765. 43130 return
  1766. 43140 '
  1767. 43150 '/* ---<< マップフィールド転送(縦) >>--- */
  1768. 43160 *MBIN_MAPSUB
  1769. 43170   gosub *FAST_ON
  1770. 43180   for X = 0 to 15
  1771. 43190     CX = VWMAPX * (MAPX-1) + X + 1 
  1772. 43200     for Y = 0 to 10
  1773. 43210       CY = VWMAPY * (MAPY-1) + Y + 1 
  1774. 43220       put@a (320,Y*16) - (335,Y*16+15),MAP_PTN%,,,,,256*MAP_DATA%(CX,CY)
  1775. 43230     next Y 
  1776. 43240     get@a (320,  0) - (327,176),GRP%,X*2816 
  1777. 43250     get@a (328,  0) - (335,176),GRP%,X*2816 + 1408
  1778. 43260   next X 
  1779. 43270   gosub *FAST_OFF
  1780. 43280 return
  1781. 43290 '
  1782. 43300 '/* ---<< 隠し機能 EUPファイル演奏 >>--- */
  1783. 43310 *EDTEUP
  1784. 43320   load@ SYSCFG$(39),EUPMEM%,0
  1785. 43330   MSG$ = "- EUP再生 -@th" : gosub *PUT_MES
  1786. 43340   play@ EUPMEM%,1
  1787. 43350 return
  1788. 43360 '
  1789. 43400 '/* ---<<マップ位置補正>>--- */
  1790. 43410 *SET_MAPPOINT
  1791. 43420   MAPX = int( SMAPX / VWMAPX ) + 1
  1792. 43430   if ( SMAPX mod VWMAPX ) = 0 then MAPX = MAPX - 1 
  1793. 43440   MAPY = int( SMAPY / VWMAPY ) + 1
  1794. 43450   if ( SMAPY mod VWMAPY ) = 0 then MAPY = MAPY - 1 
  1795. 43460 return
  1796. 43470 
  1797. 43500 '/* ---<< HP&MPを減らす >>--- */
  1798. 43510 *USE_HPMP
  1799. 43520   if HP < 0 then HP = 0
  1800. 43530   if MP < 0 then MP = 0
  1801. 43560   if HP < 189 then line (  5, 10) - ( 13,188-HP),pset,[ 0, 0, 50],bf
  1802. 43570   if MP < 189 then line ( 16, 10) - ( 21,188-MP),pset,[ 0, 0, 50],bf
  1803. 43580 return
  1804. 43590 '
  1805. 43600 '/* ---<<メッセージ表示部消去>>--- */
  1806. 43610 *INT_MSGWIN
  1807. 43620   for I = 0 to 155 step 4
  1808. 43630     put@a (  4+I,203) - (  7+I,234),MESW%
  1809. 43640     put@a (312-I,203) - (315-I,234),MESW%
  1810. 43650   next I
  1811. 43660 return
  1812. 43670 '
  1813. 43700 '/* ---<< マップパターンを準備する >>--- */
  1814. 43710 *MAKE_PTN_1
  1815. 43720   gosub *FAST_ON
  1816. 43730   load@ sysf$ + FILE$,(320,  0)
  1817. 43740   I = 1
  1818. 43750   for Y = 0 to 15
  1819. 43760     for X = 0 to 11
  1820. 43770       get@a (X*16+320,Y*16) - (X*16+335,Y*16+15),MAP_PTN%,256*I
  1821. 43780       I = I + 1
  1822. 43790     next X
  1823. 43800   next Y
  1824. 43810   line (320,  0) - (511,255),pset,0,bf
  1825. 43820   gosub *FAST_OFF
  1826. 43830 return
  1827. 43840 '
  1828. 43900 '/* ---<< メモリ状態表示 >>--- */
  1829. 43910 *VIEW_MEMORY
  1830. 43920   print "このシステムは";SMODE$;"で動作しています."
  1831. 43930   print using "RESS システムメモリ :########## Bytes 確保しています." ; fre(3)
  1832. 43940   print using "F-BASIC386メモリ:########## Bytes free." ; fre(1)
  1833. 43950   print using " 総合        :########## Bytes free." ; fre(4)
  1834. 43970   print       "※FB386メモリが不足すると動作が鈍くなることがあります."
  1835. 43980 return
  1836. 43990 '
  1837. 44000 '/* ---<<メインバッファ格納>>--- */
  1838. 44010 *MBUF_IN
  1839. 44020   get@a (  0,  0) - (319,239),GRP%,OFSET
  1840. 44030   OFSET = 0
  1841. 44040 return
  1842. 44050 '
  1843. 44100 '/* ---<<メインバッファ表示>>--- */
  1844. 44110 *MBUF_OUT
  1845. 44120   put@a (  0,  0) - (319,239),GRP%,,,,,OFSET
  1846. 44130   OFSET = 0
  1847. 44140 return
  1848. 44150 '
  1849. 44200 '/* ---<<サブバッファ格納>>--- */
  1850. 44210 *SBUF_IN
  1851. 44220   if EXCLAS >= 1 then
  1852. 44230     get@a (  0,  0) - (319,239),EXGBF%,OFSET
  1853. 44240     OFSET = 0
  1854. 44250   endif
  1855. 44260 return
  1856. 44270 '
  1857. 44300 '/* ---<<サブバッファ表示>>--- */
  1858. 44310 *SBUF_OUT
  1859. 44320   if EXCLAS => 1 then
  1860. 44330     put@a (  0,  0) - (319,239),EXGBF%,,,,,OFSET
  1861. 44340     OFSET = 0
  1862. 44350   endif
  1863. 44360 return
  1864. 44370 '
  1865. 44400 '/* ---<<グラフィックバッファ格納>>--- */
  1866. 44410 *GBUF_IN
  1867. 44420   if EXCLAS => 2 then
  1868. 44430     get@a (  0,  0) - (319,239),GRPBF%,OFSET
  1869. 44440     OFSET = 0
  1870. 44450   endif
  1871. 44460 return
  1872. 44470 '
  1873. 44500 '/* ---<<グラフィックバッファ表示>>--- */
  1874. 44510 *GBUF_OUT
  1875. 44520   if EXCLAS => 2 then
  1876. 44530     put@a (  0,  0) - (319,239),GRPBF%,,,,,OFSET
  1877. 44540     OFSET = 0
  1878. 44550   endif
  1879. 44560 return
  1880. 44570 '
  1881. 44600 '/* ---<< 回転 >> --- */
  1882. 44610 *EFCT_1
  1883. 44620   gosub *CHR_OFF
  1884. 44630   gosub *FADE_2 
  1885. 44640   gosub *EFECTSET
  1886. 44650   gosub *FADE_7
  1887. 44660   gosub *CHR_ON
  1888. 44670 return
  1889. 44680 '
  1890. 44700 '/* ---<< モザイク >> --- */
  1891. 44710 *EFCT_2
  1892. 44720   gosub *CHR_OFF
  1893. 44730   gosub *FADE_5 
  1894. 44740   gosub *EFECTSET
  1895. 44750   gosub *FADE_6
  1896. 44760   gosub *CHR_ON
  1897. 44770 return
  1898. 44780 '
  1899. 44800 '/* ---<< エフェクト時の定型処理 >>--- */
  1900. 44810 *EFECTSET
  1901. 44820   gosub *CG_OFF
  1902. 44830   gosub *DRW_WAKU
  1903. 44840   gosub *DISP_MAP
  1904. 44850   SND = 0 
  1905. 44860   gosub *DRAW_POWER
  1906. 44870   gosub *MBUF_IN
  1907. 44880   if EFECT = 2 and EXCLAS => 1 then gosub *SBUF_IN
  1908. 44890   cls
  1909. 44900   gosub *CG_ON
  1910. 44910   TPSET = 0
  1911. 44920 return
  1912. 44930 '
  1913. 44940 '/* 特別フラグ初期化
  1914. 44950 *INT_SFLG
  1915. 44960   STRYFLG%(0) = 0
  1916. 44970   STRYFLG%(1) = 1
  1917. 44980 return
  1918. 44990 '
  1919. 45000 '/* ---<< スプライト表示位置補正 >>--- */
  1920. 45010 *SET_SPRPOINT
  1921. 45020   SX = ( SMAPX mod VWMAPX ) * 16
  1922. 45030   SY = ( SMAPY mod VWMAPY ) * 16
  1923. 45040   if SX = 0 then SX = VWMAPX * 16 - 16 else SX = SX - 16
  1924. 45050   if SY = 0 then SY = VWMAPY * 16
  1925. 45060   sprite 6,MCHR%(0,1),SX-sprite(MCHR%(0,1),6),SY-sprite(MCHR%(0,1),7)
  1926. 45070 return
  1927. 45080 '
  1928. 45100 '/* ---○ マップを切り換える ○---*/
  1929. 45110 *MAPCHG
  1930. 45120   gosub *OUT_SJ
  1931. 45130   gosub *CHR_OFF
  1932. 45140   gosub *FADE_4 
  1933. 45150   gosub *SET_MAPPOINT
  1934. 45160   gosub *READ_MAP
  1935. 45170   gosub *FADE_DISPMAP
  1936. 45180   gosub *SET_SPRPOINT
  1937. 45190   gosub *INT_MAINCHR
  1938. 45200   gosub *CHR_ON
  1939. 45210   gosub *INT_PAD
  1940. 45220 return
  1941. 45230 '
  1942. 45250 '/* ---○ 指定場所に移動する ○--- */
  1943. 45260 *MAPMOVE3
  1944. 45270   gosub *OUT_SJ
  1945. 45280   gosub *CHR_OFF
  1946. 45290   gosub *SET_MAPPOINT
  1947. 45300   gosub *FADE_DISPMAP
  1948. 45310   gosub *SET_SPRPOINT
  1949. 45320   gosub *INT_MAINCHR
  1950. 45330   gosub *CHR_ON  
  1951. 45340   gosub *INT_PAD 
  1952. 45350 return
  1953. 45360 '
  1954. 45400 '/* --<< マクロ実行 >>-- */
  1955. 45410 *RUN_MAC
  1956. 45420   ENDCOM = 0 
  1957. 45430   for MACS = 1 to MACLINEMAX%( MACNO )
  1958. 45435     FLGON = 0
  1959. 45440     CMDL$ = MACSCP$( MACNO , MACS )
  1960. 45450     gosub *SCP_MAIN
  1961. 45460     if ENDCOM = 1 then MACS = MACLINEMAX%( MACNO )
  1962. 45470   next MACS
  1963. 45475   MACS = 0
  1964. 45480   ENDCOM = 0 
  1965. 45485 return
  1966. 45490 '
  1967. 45500 '/* ---<< フラッシュ >>--- */
  1968. 45510 *MAGIC_FLASH
  1969. 45520   for I = 0 to 119 step 2
  1970. 45530     line (119-I,119-I) - (200+I,120+I),xor,MJC,B
  1971. 45540   next I
  1972. 45550   for I = 118 to 0 step -2
  1973. 45560     line (119-I,119-I) - (200+I,120+I),xor,MJC,B
  1974. 45570   next I
  1975. 45580 return
  1976. 45590 '
  1977. 45600 *FLASH
  1978. 45610   if VW = 1 then TX = 32 : TY = 16
  1979. 45620   line ( TX, TY) - (319-TX,239-TY*3),xor,MJC,bf
  1980. 45630   line ( TX, TY) - (319-TX,239-TY*3),xor,MJC,bf
  1981. 45640   MJC = 7 
  1982. 45650   TX  = 0 
  1983. 45660   TY  = 0 
  1984. 45670   VW  = 0 
  1985. 45680 return
  1986. 45690 '
  1987. 45700 '/* ---○ BGMコンフィグ読み込み ○--- */
  1988. 45710 *Sys_BgmSetLoad
  1989. 45720   if RESSEND = 0 then
  1990. 45730     FLNO% = 1
  1991. 45740     open "RESSBGM.CFG" for input as #FLNO%
  1992. 45750       for I = 1 to 18
  1993. 45760         input#FLNO%,BGMN%(I)
  1994. 45770       next I
  1995. 45780     close #FLNO%
  1996. 45790   endif
  1997. 45800 return
  1998. 45810 '
  1999. 45840 '/* ---○ オンラインマニュアル File#1 ○--- */
  2000. 45850 *Sys_Manual_M
  2001. 45860   FILE$ = SYSCFG$(32)
  2002. 45870   gosub *VIEWER_TEXT
  2003. 45880 return
  2004. 45890 '
  2005. 46000 '/* ---<< Sprite☆Animater v0.91 >>--- */
  2006. 46010 *ANIMEG 
  2007. 46020   CR = 0
  2008. 46030   for I = 1 to 24
  2009. 46040     if ANMG%(ANO,I,0) = 0 then
  2010. 46050       I = 24
  2011. 46060     else
  2012. 46070       AX = ANMG%(ANO,I,1)
  2013. 46080       AY = ANMG%(ANO,I,2)
  2014. 46090       CR = ANMG%(ANO,I,3)
  2015. 46100       if sprite( CR, 0 ) = 0 then sprite 0,CR,1 
  2016. 46110       sprite time
  2017. 46120       sprite 1,CR,ANMG%(ANO,I,0)
  2018. 46130       sprite 6,CR,AX-sprite(CR,6),AY-sprite(CR,7)
  2019. 46140     endif
  2020. 46150     if CR = ANMG%( ANO, 1 , 3 ) then wait ANIMEWAIT
  2021. 46160   next I
  2022. 46170 return
  2023. 46180 '
  2024. 46200 '/* ---<< シンボルマネージャ >>--- */
  2025. 46210 *COUNT_MSG     ' 文字列Byte数カウント
  2026. 46220   SCODE = 0
  2027. 46230   MJ = klen( MSG$ )
  2028. 46240   for JA = 1 to MJ
  2029. 46250     G$ = kmid$(MSG$,JA,1)
  2030. 46260     if G$ = "@" then
  2031. 46270       JA    = JA + 2
  2032. 46280       SCODE = SCODE + 1
  2033. 46290     endif
  2034. 46300     if JA = klen( mid$(MSG$ , 1 , 52 + SCODE * 3 ) ) then BCODE = SCODE
  2035. 46310   next JA
  2036. 46320   MZ = len(MSG$) - SCODE * 3 
  2037. 46330 return
  2038. 46340 '
  2039. 46350 *INS_SYM           ' 特殊文字列置換
  2040. 46360   INSLOOP = 1
  2041. 46370   OF = 1
  2042. 46380   while INSLOOP = 1
  2043. 46390     M = instr( OF , SYM$ , "#" )
  2044. 46400     if M <> 0 then
  2045. 46410       TMP$(1) = mid$ ( SYM$ , 1   , M-1 )
  2046. 46420       TMP$(2) = mid$ ( SYM$ , M+3 )
  2047. 46430       CODE$   = mid$ ( SYM$ , M   , 3   )
  2048. 46440       if CODE$ = "#NM" then HK$ = NAM$
  2049. 46450       if CODE$ = "#MS" then HK$ = MSNAME$
  2050. 46460       if CODE$ = "#GL" then HK$ = str$(GLD)
  2051. 46470       if CODE$ = "#EX" then HK$ = str$(EX)
  2052. 46480       if CODE$ = "#LV" then HK$ = str$(LV)
  2053. 46490       SYM$ = TMP$(1) + HK$ + TMP$(2)
  2054. 46500       OF = M + 1
  2055. 46510     else
  2056. 46520       INSLOOP = 0
  2057. 46530     endif
  2058. 46540   wend
  2059. 46550 return
  2060. 46560 '
  2061. 46600 *WRT_SYM           ' 文字列表示メイン
  2062. 46610   MJ = klen(SYM$)
  2063. 46620   for JA = 1 to MJ
  2064. 46630     JI$ = kmid$(SYM$,JA,1)
  2065. 46640     if JI$ = "@" then
  2066. 46650       CNT$ = kmid$(SYM$,JA,3)
  2067. 46660       if CNT$ = "@wh" then MJC = 7
  2068. 46670       if CNT$ = "@ye" then MJC = 6
  2069. 46680       if CNT$ = "@ci" then MJC = 5
  2070. 46690       if CNT$ = "@gr" then MJC = 4
  2071. 46700       if CNT$ = "@mz" then MJC = 3
  2072. 46710       if CNT$ = "@rd" then MJC = 2
  2073. 46720       if CNT$ = "@bl" then MJC = 1
  2074. 46730       if CNT$ = "@st" then STP = 1
  2075. 46740       if CNT$ = "@th" then STP = 0
  2076. 46770       if CNT$ = "@it" then SB  = 0
  2077. 46780       if CNT$ = "@ft" then SB  = 1
  2078. 46790       if CNT$ = "@nn" then SB  = 2
  2079. 46800       if CNT$ = "@sd" then SB  = 4
  2080. 46810       if CNT$ = "@fd" then SB  = 8
  2081. 46820       JA = JA + 2
  2082. 46830     else
  2083. 46840       symbol (SX,SY),JI$,S!,S!,MJC,,,SB
  2084. 46850       if KTYPE(JI$,1) = 0 then SX = SX + 6 else SX = SX + 12
  2085. 46860     endif
  2086. 46870   next JA
  2087. 46880 return
  2088. 46890 '
  2089. 46900 '/* ---<< 戦闘時/移動時主人公初期化 >>--- */
  2090. 46910 *INT_BTLSPR
  2091. 46920   sprite 1,BCHR%(0,1),BNRMPTN%
  2092. 46930   gosub *SETPS_SPR_SJ
  2093. 46940 return
  2094. 46950 '
  2095. 46960 *INT_MAINCHR
  2096. 46970   sprite 1,MCHR%(0,1),MCHR%(0,0)
  2097. 46980 return
  2098. 46990 '
  2099. 47000 '/* ---<< Read YSP-Sprite-Data >>--- */
  2100. 47010 *READ_SPRYSP
  2101. 47020   if YSPSET = 0 then
  2102. 47030     FILE$ = YSPFILE$
  2103. 47040     M$ = "Sprite Reading... "
  2104. 47050     gosub *READ_YSP 
  2105. 47060     YSPSET = 1
  2106. 47070   endif
  2107. 47080 return
  2108. 47090 '
  2109. 47100 *READ_YSP
  2110. 47110   def FNR$(A$) = right$(A$,1) + left$(A$,1)  'Intel形式に変換
  2111. 47120   FLNO% = 1
  2112. 47130   gosub *FAST_ON
  2113. 47140   open "I",#FLNO%, sysf$ + FILE$
  2114. 47150     gosub *YSP_READ_CHR
  2115. 47160     gosub *YSP_READ_PAL
  2116. 47170     gosub *YSP_READ_HOWPTN
  2117. 47180     gosub *YSP_DEFINE_SPR
  2118. 47190   close #FLNO%
  2119. 47200   gosub *FAST_ON
  2120. 47210 return
  2121. 47220 '
  2122. 47230 *YSP_READ_CHR              'キャラクタデータ読込
  2123. 47240   A$ = input$(2,#FLNO%)
  2124. 47250   CHS = cvi( FNR$(A$) )
  2125. 47260   for I = 0 to CHS-1   
  2126. 47270     A$ = input$(8,#FLNO%)
  2127. 47280     for J = 0 to 3
  2128. 47290       CH(I,J) = cvi( FNR$( mid$( A$,J*2+1,2 ) ) )
  2129. 47300     next
  2130. 47310   next
  2131. 47320 return
  2132. 47330 '
  2133. 47340 *YSP_READ_PAL             'パレットテーブル読込&登録
  2134. 47350   A$ = input$(2,#FLNO%)
  2135. 47360   PLT = cvi( FNR$(A$) )
  2136. 47370   for I = 0 to PLT-1   
  2137. 47380     A$ = input$(32,#FLNO%)
  2138. 47390     for J = 0 to 15
  2139. 47400       PL(J) = cvi( FNR$( mid$( A$,J*2+1,2 ) ) )
  2140. 47410     next
  2141. 47420   def sprite 2,I,PL
  2142. 47430   next
  2143. 47440 return
  2144. 47450 '
  2145. 47460 *YSP_READ_HOWPTN          'スプライトパターン読込
  2146. 47470   A$ = input$(2,#FLNO%)
  2147. 47480   PTN = cvi( FNR$(A$) )
  2148. 47490   for I = 0 to PTN-1
  2149. 47500     locate 0,23 : print using M$ + "###%";(I/PTN)*100
  2150. 47510     A$ = input$(128,#FLNO%)
  2151. 47520     for J = 0 to 63
  2152. 47530       DF(J) = cvi( FNR$( mid$( A$,J*2+1,2 ) ) )
  2153. 47540     next
  2154. 47550   def sprite 0,I,DF,0
  2155. 47560   next
  2156. 47580 return
  2157. 47590 '
  2158. 47600 *YSP_DEFINE_SPR
  2159. 47610   def sprite 1,MCHR%(0,1),(  0,240),MCHR%(0,0),1,1,0,CH(SPRPAL%(0),3)
  2160. 47620   def sprite 1,BCHR%(0,1),(  0,240),BCHR%(0,0),2,2,0,CH(SPRPAL%(1),3)
  2161. 47660   locate 0,23 
  2162. 47670   print M$ + "100%"
  2163. 47680 return
  2164. 47690 '
  2165. 47800 '----
  2166. 47810 *SETPS_SPR_MONSTER
  2167. 47820   if MSSIZE = 1 then SX = 32 : SY = 80
  2168. 47830   if MSSIZE = 2 then SX = 24 : SY = 60
  2169. 47840   if MSSIZE = 3 then SX = 24 : SY = 16
  2170. 47850   CR = BCHR%( MSSIZE , 1 )
  2171. 47870   sprite 6,CR, SX-sprite( CR,6 ),SY-sprite( CR,7 )
  2172. 47880 return
  2173. 47890 '
  2174. 47900 *SETPS_SPR_SJ
  2175. 47910   sprite 6,BCHR%(0,1),192-sprite(BCHR%(0,1),6),80-sprite(BCHR%(0,1),7)
  2176. 47920 return
  2177. 47930 '
  2178. 47950 '/* ---<< 画面外退避 >>--- */
  2179. 47960 *OUT_CHR
  2180. 47970   sprite 6, CR, 320-sprite( CR,6 ), 0-sprite( CR,7 )
  2181. 47980 return
  2182. 47990 '
  2183. 48000 '/* ---○ TEXT VIEWER ○--- */
  2184. 48010 *VIEWER_TEXT
  2185. 48020   gosub *INT_PAD
  2186. 48030   if EXCLAS => 1 then gosub *SBUF_IN
  2187. 48040   MJC  = 0
  2188. 48050   TYPE = 1
  2189. 48060   gosub *FADE_PASTEL
  2190. 48070   FLNO% = 1
  2191. 48080   gosub *MBUF_IN
  2192. 48090   open sysf$ + FILE$ for input as #FLNO%
  2193. 48100     A_LOOP = 1
  2194. 48110     while A_LOOP = 1 
  2195. 48120       B_LOOP = 1
  2196. 48130       T = -1 
  2197. 48140       gosub *MBUF_OUT
  2198. 48150       while B_LOOP = 1
  2199. 48160         T = T + 1
  2200. 48170         input#FLNO%,TEXTTMP$(T)
  2201. 48180         if eof(FLNO%) = -1 then A_LOOP = 0
  2202. 48190         if T = 20 then B_LOOP = 0
  2203. 48200         if A_LOOP = 0 then B_LOOP = 0
  2204. 48210       wend
  2205. 48220       TE_MAX = T
  2206. 48230       for I = 0 to TE_MAX
  2207. 48240         SX = 0 : SY = I * 15  : SYM$ = TEXTTMP$(I) : gosub *WRT_SYM
  2208. 48250       next I
  2209. 48260       PADSET = 5 
  2210. 48270       gosub *WAIT_PAD
  2211. 48280     wend
  2212. 48290   close #FLNO%
  2213. 48300   if EXCLAS => 1 then
  2214. 48310     gosub *SBUF_OUT
  2215. 48320   else
  2216. 48330     gosub *DRAW_WAKU
  2217. 48340     gosub *DISP_MAP
  2218. 48360   endif
  2219. 48370   TPSET = 0
  2220. 48380 return
  2221. 48390 '
  2222. 48400 '/* ---<<敵から逃げる>>--- */
  2223. 48410 *ESCAPE
  2224. 48420   MSG$ = "#NMは逃げ出した! ▼" : gosub *PUT_MES 
  2225. 48430   if LV > MSLV + 2 then
  2226. 48440     MSA = 3
  2227. 48450   else
  2228. 48460     TMP = int ( RND * 3 ) + 1
  2229. 48470     if TMP = 1 then 
  2230. 48480       if BOSS <> 1 then MSA = 3 
  2231. 48490     else 
  2232. 48500       MSG$ = "しかし失敗してしまった!  ▼" : gosub *PUT_MES
  2233. 48510     endif
  2234. 48520   endif  
  2235. 48530 return
  2236. 48540 '
  2237. 48550 '/* ---<< 画面外退避 >>--- */
  2238. 48560 *OUT_SJ
  2239. 48570   CR = MCHR%(0,1) : gosub *OUT_CHR
  2240. 48580 return
  2241. 48590 '
  2242. 48600 '/* ---<< 戦闘サブ >>--- */
  2243. 48610 *NO_MGC
  2244. 48620   MSG$ = "@yeMPが不足していて効果がありません!▼@st"
  2245. 48630   gosub *PUT_MES
  2246. 48640 return
  2247. 48650 *NO_DAMAGE
  2248. 48660   MSG$ = "@mzしかし敵を傷つけることができなかった!▼@st"
  2249. 48670   gosub *PUT_MES
  2250. 48680 return
  2251. 48690 '
  2252. 48700 *ATTACK_DAMAGE
  2253. 48710   if DM > 0 then 
  2254. 48720     MSHP = MSHP - DM 
  2255. 48730     if MSHP <= 0 then MSA = 0 
  2256. 48740     MSG$ = "@wh#MSに" + str$(DM) + "のダメージを与えた! ▼" 
  2257. 48750     gosub *PUT_MES
  2258. 48760   else
  2259. 48770     gosub *NO_DAMAGE
  2260. 48780   endif
  2261. 48790 return
  2262. 48800 '
  2263. 48810 *LOAD_BOSS
  2264. 48820   FLNO% = 2 
  2265. 48830   open sysf$ + BOSFILE$ for input as #FLNO% 
  2266. 48840     input#FLNO%, MSNAME$, MSMXHP ,MSDFP
  2267. 48850     input#FLNO%, MSEXP  , MSGLD  ,CLJ  , MSTIF$ , MSSIZE , BKTIF$ 
  2268. 48860     for I = 1 to 6 
  2269. 48870       input#FLNO%,BSWPN$(I),BSWPP%(I) 
  2270. 48880     next I 
  2271. 48890     input#FLNO%,MEX 
  2272. 48900     for I = 1 to MEX
  2273. 48910       input#FLNO%,BSMES$(I)
  2274. 48920     next I  
  2275. 48970   close #FLNO%
  2276. 48980 return
  2277. 48990 '
  2278. 49000 '/* ---<<スプライトキャラクタフィールド移動>>--- */
  2279. 49010 *CHR_UP
  2280. 49020   for J = 1 to 2
  2281. 49030     for I = 1 to 8
  2282. 49040       sprite 6, MMV_CHR ,0,-1
  2283. 49050       wait MOVEWAIT
  2284. 49060     next I
  2285. 49070     if J = 1 then sprite 1, MCHR%(0,1), MCHR%(0,0) + 3 * SPRCLR
  2286. 49080     if J = 2 then sprite 1, MCHR%(0,1), MCHR%(0,0) + 2 * SPRCLR
  2287. 49090   next J
  2288. 49100 return
  2289. 49110 '
  2290. 49150 *CHR_RIGHT
  2291. 49160   for J = 1 to 2
  2292. 49170     for I = 1 to 8
  2293. 49180       sprite 6, MMV_CHR ,1,0
  2294. 49190       wait MOVEWAIT
  2295. 49200     next I
  2296. 49210     if J = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 7 * SPRCLR
  2297. 49220     if J = 2 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 6 * SPRCLR
  2298. 49230   next J
  2299. 49240 return
  2300. 49250 '
  2301. 49300 *CHR_DOWN
  2302. 49310   for J = 1 to 2
  2303. 49320     for I = 1 to 8
  2304. 49330       sprite 6, MMV_CHR ,0,1
  2305. 49340       wait MOVEWAIT
  2306. 49350     next I
  2307. 49360     if J = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 1 * SPRCLR
  2308. 49370     if J = 2 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 0 * SPRCLR
  2309. 49380   next J
  2310. 49390 return
  2311. 49400 '
  2312. 49450 *CHR_LEFT
  2313. 49460   for J = 1 to 2
  2314. 49470     for I = 1 to 8
  2315. 49480       sprite 6, MMV_CHR ,-1,0
  2316. 49490       wait MOVEWAIT
  2317. 49500     next I
  2318. 49510     if J = 1 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 5 * SPRCLR
  2319. 49520     if J = 2 then sprite 1,MCHR%(0,1),MCHR%(0,0) + 4 * SPRCLR
  2320. 49530   next J 
  2321. 49540 return
  2322. 49550 '
  2323. 49600 '/* ---<< モンスター点滅→やられる >>--- */
  2324. 49610 *DIE_MONSTER
  2325. 49620   for I = 0 to 11
  2326. 49630     sprite time
  2327. 49640     sprite 0,BCHR%(MSSIZE,1),1
  2328. 49650     wait BRNKWAIT
  2329. 49660     sprite 0,BCHR%(MSSIZE,1),0
  2330. 49670     wait BRNKWAIT
  2331. 49680   next I
  2332. 49690 return
  2333. 49700 '
  2334. 50000 '+--====================--+
  2335. 50010 '|○ システムコンフィグファイル読込 ○|
  2336. 50020 '|○            File #4 ○|
  2337. 50030 '+--====================--+
  2338. 50040 *Sys_ConfigLoad 
  2339. 50050   if RESSEND = 0 then  
  2340. 50060     gosub *LOAD_RESSCFG
  2341. 50070     if EREND <> 1 then gosub *SET_MAINCFG 
  2342. 50080   endif
  2343. 50090 return 
  2344. 50100 '
  2345. 50110 *LOAD_RESSCFG
  2346. 50120   print "- RESS Configration -
  2347. 50130   FLNO% = 4 
  2348. 50140   open "RESS.CFG" for input as #FLNO% 
  2349. 50150   CFGEND = 0 
  2350. 50160   while CFGEND = 0 
  2351. 50170     SYSSET = 0 
  2352. 50180     while SYSSET = 0 
  2353. 50190       input#FLNO%,SYSID$ 
  2354. 50200      if mid$( SYSID$,1,1 ) <> "#" then SYSSET = 1 
  2355. 50210     wend 
  2356. 50220     input#FLNO%,SYSDT$ 
  2357. 50230     syscfg$( val(SYSID$) ) = SYSDT$ 
  2358. 50240     if syscfg$(99) = "EOF" or syscfg$(99) = "eof" then CFGEND = 1 
  2359. 50250   wend 
  2360. 50260   close #FLNO% 
  2361. 50270   if syscfg$(1) <> SVER$ then EREND = 1
  2362. 50280 return
  2363. 50290 ' 
  2364. 50300 *SET_MAINCFG
  2365. 50310    CPU$       = syscfg$( 2)
  2366. 50320    EDIT_ON    = val( syscfg$( 3) )
  2367. 50330    MSGW_SPC$  = syscfg$( 6)
  2368. 50340    START_MSG$ = syscfg$( 7)
  2369. 50350    EUPSIZE    = val( syscfg$( 8) )
  2370. 50360    sysf$   = syscfg$(10)
  2371. 50370    savef$  = syscfg$(11)
  2372. 50380    stryf$  = syscfg$(12)
  2373. 50390    euplib$ = syscfg$(13)
  2374. 50400    CDBF    = val( syscfg$(14) )
  2375. 50410    SCAN    = val( syscfg$(15) )
  2376. 50420    NAM$    =      syscfg$(16)  
  2377. 50430    FAST    = val( syscfg$(17) )
  2378. 50440    HDWAIT  = val( syscfg$(18) )
  2379. 50450    PADSND  = val( syscfg$(19) )
  2380. 50460    YSPFILE$  =    syscfg$(21)  
  2381. 50470    ITMFILE$  =    syscfg$(22)  
  2382. 50480    WAKUFILE$ =    syscfg$(23)  
  2383. 50490    MACFILE$  =    syscfg$(27)  
  2384. 50500    DEAD_MES$ =    syscfg$(29)  
  2385. 50510    KCLSPD  = val( syscfg$(34) )
  2386. 50520    SCRL    = val( syscfg$(36) )
  2387. 50530    PORT    = val( syscfg$(37) )
  2388. 50540    MCHR%(0,1) = val( syscfg$(40) )
  2389. 50550    MCHR%(0,0) = val( syscfg$(41) )
  2390. 50560    BCHR%(0,1) = val( syscfg$(42) )
  2391. 50570    BNRMPTN%   = val( syscfg$(43) )
  2392. 50580    BWINPTN%   = val( syscfg$(44) )
  2393. 50590    BDMGPTN%   = val( syscfg$(45) )
  2394. 50600    BDIEPTN%   = val( syscfg$(46) )
  2395. 50610    BCHR%(1,1) = val( syscfg$(47) )
  2396. 50620    BCHR%(2,1) = val( syscfg$(48) )
  2397. 50630    BCHR%(3,1) = val( syscfg$(49) )
  2398. 50640    WPNCHR_ST% = val( syscfg$(50) )
  2399. 50650    ST_WPNSPR% = val( syscfg$(53) )
  2400. 50660    ST_MS1SPR% = val( syscfg$(54) )
  2401. 50670    ST_MS2SPR% = val( syscfg$(55) )
  2402. 50680    ST_MS3SPR% = val( syscfg$(56) )
  2403. 50690    ST_LSSSPR% = val( syscfg$(57) )
  2404. 50700    WEPONFILE$ =      syscfg$(58)  
  2405. 50710    SPRPAL%(0) = val( syscfg$(59) )
  2406. 50715    SPRPAL%(1) = val( syscfg$(60) )
  2407. 50720    FLDMAC     = val( syscfg$(65) )
  2408. 50730    ZKBMAC     = val( syscfg$(66) )
  2409. 50740    BSBMAC     = val( syscfg$(67) )
  2410. 50750    LDNMAC     = val( syscfg$(68) )
  2411. 50760    SVNMAC     = val( syscfg$(69) )
  2412. 50770    for I = 0 to 5 
  2413. 50780      BACKBANK$(I) = SYSCFG$( 70+I )  '戦闘背景設定 
  2414. 50790    next I 
  2415. 50800    for I = 0 to 7 
  2416. 50810      PTNBANK$(I)  = SYSCFG$( 80+I )  'パターンファイル設定 
  2417. 50820    next I 
  2418. 50830    MOVEWAIT   = val( syscfg$(90) )
  2419. 50840    ANIMEWAIT  = val( syscfg$(91) )
  2420. 50850    BRNKWAIT   = val( syscfg$(92) )
  2421. 50860    PADWAIT    = val( syscfg$(93) )
  2422. 50870    SYSWAIT    = val( syscfg$(94) )
  2423. 50880    BCHR%(0,0) = BNRMPTN%
  2424. 50890    MMV_CHR%   = MCHR%(0,1)
  2425. 50900    for I = 0 to 63
  2426. 50910      WPNCHR%(I)   = WPNCHR_ST% + I
  2427. 50920    next I
  2428. 50930    print "システムファイルパスは ";sysf$ ;" に設定されています."
  2429. 50940    print "ノート記録パスは       ";savef$;" に設定されています."
  2430. 50950    print "ストーリーデータパスは ";stryf$;" に設定されています."
  2431. 50960    if CDBF = 0 then print "現在CD制御は無効です."
  2432. 50970    print "BGMバッファを";EUPSIZE;"K Bytes確保しました."
  2433. 50980 return 
  2434. 50990 '
  2435. 51000 '####################################################
  2436. 51010 '●モザイクルーチン
  2437. 51020 '  このルーチンは藤本雅也氏の作品が
  2438. 51030 '  「◎h!FMTOWNS1993/7月号」に掲載されたものです。
  2439. 51050 '####################################################
  2440. 51060 *MOZAIC
  2441. 51070  ZB!=1/Z:BX=320*ZB!:BY=240*ZB!
  2442. 51080  PUT@A(320,0)-(639,239),EXGBF%,PSET,ZB!,ZB!
  2443. 51090  PASTEL 20+Z*7
  2444. 51100  IF Z>4 THEN LINE(320,0)-(320+BX-1,BY-1),PASTEL,0,BF
  2445. 51110  GET@A(320,0)-(320+BX-1,BY-1),GRP%
  2446. 51120  PUT@A(0,0)-(BX-1,BY-1),GRP%,PSET,Z,Z
  2447. 51130 return
  2448. 51140 '
  2449. 51200 '###################################################################
  2450. 51210 '  スプライト画面モード  変更ルーチン  *SCRN_CHANGE
  2451. 51220 '        [SCRN_MODE=スクリーンモード(SCREEN@0時は0/SCREEN@1時は1)]
  2452. 51230 '        [SCRN_X=X座標表示位置(ドット単位)]
  2453. 51240 '###################################################################
  2454. 51250 *SCRN_CHANGE
  2455. 51260   IF SCRN_MODE=0 THEN RESTORE *SCRN_DATA0
  2456. 51270   IF SCRN_MODE=1 THEN RESTORE *SCRN_DATA1
  2457. 51280   READ SCRN_AD,SCRN_DT$
  2458. 51290   WHILE SCRN_AD<>99
  2459. 51300     OUT &H440,SCRN_AD,2
  2460. 51310     OUT &H442,VAL("&H"+SCRN_DT$),2
  2461. 51320     READ SCRN_AD,SCRN_DT$
  2462. 51330   WEND
  2463. 51340   OUT &H440,11,2:OUT &H442,&H008A+SCRN_X*2,2
  2464. 51350   OUT &H440,12,2:OUT &H442,&H028A+SCRN_X*2,2
  2465. 51360   OUT &H440,22,2:OUT &H442,&H008A+SCRN_X*2,2
  2466. 51370 RETURN
  2467. 51380 '===================================================================
  2468. 51490 *SCRN_DATA0'---------------------------------------------------
  2469. 51400   DATA 16,0406, 27,1100, 99,****
  2470. 51410 *SCRN_DATA1'---------------------------------------------------
  2471. 51420   DATA 00,0060, 01,02C0, 04,031F, 05,0000, 06,0004, 07,0000
  2472. 51430   DATA 08,0419, 09,008A, 10,030A, 13,0046, 14,0406, 15,0046
  2473. 51440   DATA 16,0406, 18,008A, 25,0058, 26,0000, 27,1111, 29,0002
  2474. 51450   DATA 30,0000, 31,0192, 99,****
  2475. 51460 '###################################################################
  2476. 51500 '-----------------------------------------------------
  2477. 51510 '/* ---<< 32kスプライト登録補助 >>--- */
  2478. 51550 *TOKA
  2479. 51560   get@  (320,  0) - (511,255),GRP%,   [  0,  0,  0] 
  2480. 51570   put@  (320,  0) - (511,255),GRP%,or,[  0,  0,  0,1] 
  2481. 51580 return
  2482. 51590 '
  2483. 51600 *SPRSET_1
  2484. 51610   get@a ( BX, BY) - (BX+15,BY+15),TMPPTN% 
  2485. 51630   def sprite 0,OFSET,TMPPTN%,1
  2486. 51640   OFSET = 0
  2487. 51650 return
  2488. 51660 '
  2489. 51700 *SPRSET_4
  2490. 51710   for PY = 0 to 1
  2491. 51720     for PX = 0 to 1
  2492. 51730       get@a (PX*16+BX,PY*16+BY) - (PX*16+BX+15,PY*16+BY+15),TMPPTN%
  2493. 51735       print 
  2494. 51740       def sprite 0, OFSET + PY*8 + PX*4 ,TMPPTN%,1
  2495. 51750     next PX
  2496. 51760   next PY
  2497. 51770   OFSET = 0
  2498. 51780 return
  2499. 51790 '
  2500. 51800 *SPRSET_16
  2501. 51810   for PY = 0 to 3
  2502. 51820     for PX = 0 to 3
  2503. 51830       get@a (PX*16+BX,PY*16+BY) - (PX*16+BX+15,PY*16+BY+15),TMPPTN%
  2504. 51840       def sprite 0,OFSET + PY*16 + PX*4,TMPPTN%,1
  2505. 51850     next PX
  2506. 51860   next PY
  2507. 51870   OFSET = 0
  2508. 51880 return
  2509. 51890 '
  2510. 51900 *SPRSET_81
  2511. 51910   for PY = 0 to 8
  2512. 51920     for PX = 0 to 8
  2513. 51930       get@a (PX*16+BX,PY*16+BY) - (PX*16+BX+15,PY*16+BY+15),TMPPTN%
  2514. 51940       def sprite 0,OFSET + PY*36 + PX*4 , TMPPTN%,1
  2515. 51950     next PX
  2516. 51960   next PY
  2517. 51970   OFSET = 0
  2518. 51980 return
  2519. 51990 '
  2520. 52000 '+---==============---+
  2521. 52010 '|○ スプライト設定 ○|
  2522. 52020 '|○                ○|
  2523. 52030 '+---==============---+
  2524. 52040 *SET_SPR_WEPON
  2525. 52050   if RESSEND = 0 then
  2526. 52060     gosub *LOAD_WEPON
  2527. 52070     for I = 0 to 63
  2528. 52080       def sprite 1,WPNCHR%(I),(32, 80),ST_WPNSPR%,1,1,0
  2529. 52090     next I
  2530. 52100   endif
  2531. 52110   OFSET = 0
  2532. 52120 return
  2533. 52130 '
  2534. 53500 '+----------------------------------+
  2535. 53510 '|○ デバッグ用メモリ表示ルーチン ○|
  2536. 53520 '|○                              ○|
  2537. 53530 '+--==============================--+
  2538. 53540 *Debug_MemoryView
  2539. 53550   sprite off
  2540. 53560   screen@ 0 
  2541. 53570   color 7,0,7,4
  2542. 53580   if DBM <> 0 then
  2543. 53590     print "---------☆デバッグルーチンだよん♪☆---------"
  2544. 53600     print "正常に終了したよ~な感じです(^^;)
  2545. 53610     print "今のメモリの使用状況を表示しま~すっ(^^;)"
  2546. 53620     gosub *VIEW_MEMORY
  2547. 53660     print "-<< パッドを押すと終了しちゃいます(^^;) >>-"
  2548. 53670     PADSET = 0 
  2549. 53680     gosub *WAIT_PAD
  2550. 53690   endif
  2551. 53700   print "終了しました。またどうぞ♪"
  2552. 53710   gosub *CDSTOP
  2553. 53720   play off
  2554. 53730 return
  2555. 53740 '
  2556. 53800 '/* ---<<コンフィグのバージョンが違う場合>>--- */
  2557. 53810 *Sys_CFGERR
  2558. 53820   if EREND = 1 then 
  2559. 53830     color 7,0,7,4 
  2560. 53840     beep 1 
  2561. 53850     print "!!RESSコンフィグのバージョンが違います!!" 
  2562. 53860     print "--------------<<緊急終了します>>----------------" 
  2563. 53870     print "パッドのボタンを押してください." 
  2564. 53880     PADSET = 0 
  2565. 53890     PADSND = 0 
  2566. 53900     gosub *WAIT_PAD 
  2567. 53910     beep 0 
  2568. 53920     end 
  2569. 53930   endif 
  2570. 53940 return 
  2571. 53950 '
  2572. 54000 '+---==================================================---+
  2573. 54010 '|○ スクリプトモジュール ライトセイバー  ver.0.91 #06  File #4 ○|
  2574. 54030 '+---==================================================---+
  2575. 54040 *SCRPT_RUN
  2576. 54060   FILE$  = stryf$ + SCPFILE$ 
  2577. 54070   FLNSC% = 4 
  2578. 54080   gosub *INT_SFLG
  2579. 54090   gosub *READ_SCPFILE
  2580. 54100   ENDCOM      = 0
  2581. 54110   SCP_LOOP    = 1
  2582. 54120   SCP_LINE    = 1
  2583. 54140   while SCP_LOOP = 1
  2584. 54150     CMDL$ =  SCRPT$( SCP_LINE )
  2585. 54160     FLGON = SCPFLG%( SCP_LINE )
  2586. 54170     TMM$ = mid$( CMDL$,1,1 )
  2587. 54180     if TMM$ <> "#" and TMM$ <> "*" then gosub *SCP_MAIN
  2588. 54190     SCP_LINE = SCP_LINE + 1
  2589. 54200     if SCP_LINE  > SCP_MAX then SCP_LOOP = 0
  2590. 54210     if ENDS   <> 0 then ENDCOM   = 1
  2591. 54220     if ENDCOM <> 0 then SCP_LOOP = 0
  2592. 54230   wend
  2593. 54240   SCP_LOOP = 0
  2594. 54250   MEST     = 0
  2595. 54280 return
  2596. 54290 '
  2597. 54300 *READ_SCPFILE
  2598. 54320   open FILE$ for input as #FLNSC%
  2599. 54330     READLOOP = 1 
  2600. 54340     SCP_LINE = 1 
  2601. 54350     while READLOOP = 1
  2602. 54360       input#FLNSC%, TMP$
  2603. 54370       TMM$ = mid$( TMP$, 1, 1 )
  2604. 54380       if TMM$ = "#" or TMM$ = "*" then TMP% = 0 else input#FLNSC%,TMP%
  2605. 54390       SCRPT$(SCP_LINE)  = TMP$
  2606. 54400       SCPFLG%(SCP_LINE) = TMP%
  2607. 54410       if eof(FLNSC%) = -1 or TMP$ = "EOF" then 
  2608. 54420         READLOOP = 0
  2609. 54430         SCP_MAX  = SCP_LINE
  2610. 54440       endif
  2611. 54450       SCP_LINE = SCP_LINE + 1
  2612. 54460     wend
  2613. 54470   close #FLNSC%
  2614. 54480 return
  2615. 54490 '
  2616. 54500 '----------------------------------
  2617. 54510 *SCP_MAIN
  2618. 54520   on error goto *ERR_SCP 
  2619. 54530   gosub *INT_SFLG
  2620. 54540   CMDN$ = mid$( CMDL$ , 1 , 6 )
  2621. 54550   if STRYFLG%(FLGON) = 1 then
  2622. 54560     if CMDN$ = "ENDFON" then ENDCOM = 1
  2623. 54570     if CMDN$ = "GOLFON" then
  2624. 54580       TMP = val( mid$( CMDL$ , 8 ) )
  2625. 54590       SCP_LINE = TMP - 1
  2626. 54600     endif
  2627. 54630   else if STRYFLG%(FLGON) = 0 then
  2628. 54640     if CMDN$ = "CDSTOP" then gosub *CDSTOP   'CD停止  
  2629. 54650     if CMDN$ = "CDREPT" then gosub *CDREP    'CDリピート
  2630. 54660     if CMDN$ = "ZAKOBT" then gosub *BATTLE   'ランダム戦闘 
  2631. 54670     if CMDN$ = "REDRAW" then gosub *DISP_MAP 'フィールド表示
  2632. 54680     if CMDN$ = "FREDRW" then gosub *FADE_DISPMAP
  2633. 54690     if CMDN$ = "WAKULD" then gosub *DRW_WAKU '枠表示
  2634. 54700     if CMDN$ = "PLSTOP" then play stop       '演奏停止
  2635. 54710     if CMDN$ = "BACKLD" then gosub *LOAD_BTLBACK
  2636. 54720     if CMDN$ = "ALLEND" then ENDS   = 1      'ゲーム終了
  2637. 54730     if CMDN$ = "SCPEND" then ENDCOM = 1      'スクリプト終了
  2638. 54740     if CMDN$ = "INTPAD" then gosub *INT_PAD
  2639. 54750     if CMDN$ = "RESERV" then gosub *RESVD    'リザーブド
  2640. 54760     if CMDN$ = "PDWAIT" then gosub *PAD_WAIT 'パッド入力待ち
  2641. 54770     if CMDN$ = "EPOWER" then gosub *DEL_POWER  ' HP/MPメータ消去
  2642. 54780     if CMDN$ = "DPOWER" then gosub *DRAW_POWER ' HP/MPメータ描画
  2643. 54790     if CMDN$ = "FASTON" then gosub *FAST_ON
  2644. 54800     if CMDN$ = "FASTOF" then gosub *FAST_OFF
  2645. 54810     if CMDN$ = "PUTSTS" then gosub *Main_Puts_States
  2646. 54820     if CMDN$ = "MANUAL" then gosub *Sys_Manual_M
  2647. 54830     if CMDN$ = "BTTLON" then MNSON = 1
  2648. 54840     if CMDN$ = "BTTLOF" then MNSON = 0
  2649. 54850     if CMDN$ = "BSPRIT"  and ANIMESET = 1 then gosub *INT_BTLSPR
  2650. 54860     if CMDN$ = "INTMSG" then MSG$ = "" : gosub *PUT_MES
  2651. 54870     if CMDN$ = "ANIMOF" then ANIMESET = 0
  2652. 54880     if CMDN$ = "ANIMON" then ANIMESET = 1
  2653. 54890     if CMDN$ = "ESCAPE" then gosub *ESCAPE
  2654. 54900     if CMDN$ = "MSTSEL" then gosub *MST_SEL
  2655. 54910     if CMDN$ = "BOSSLD" then gosub *LOAD_BOSS
  2656. 54920     if CMDN$ = "BF_INM" then gosub *MBUF_IN
  2657. 54930     if CMDN$ = "BFOUTM" then gosub *MBUF_OUT
  2658. 54990     '
  2659. 55000     '/* フラグ変更   { FLGSET OFF 001 , 0 } */
  2660. 55010     if CMDN$ = "FLGSET" then
  2661. 55020       NO = val ( mid$( CMDL$ , 12 , 3 ) )
  2662. 55030       if mid$( CMDL$ , 8 , 3 ) = "OFF" then
  2663. 55040         STRYFLG%(NO) = 0 
  2664. 55050       else if mid$( CMDL$ , 8 , 3 ) = "ON_" then
  2665. 55060         STRYFLG%(NO) = 1 
  2666. 55070       endif
  2667. 55080     endif
  2668. 55090     '
  2669. 55100     '/* マップ内画面移動   { DSPCHG 01 01 1 , 0 } */
  2670. 55110     if CMDN$ = "DSPCHG" then
  2671. 55120       SMAPX = val ( mid$( CMDL$ ,  8 , 2 ) )
  2672. 55130       SMAPY = val ( mid$( CMDL$ , 11 , 2 ) )
  2673. 55140       MSGFG = val ( mid$( CMDL$ , 14 , 1 ) )
  2674. 55150       gosub *MAPMOVE3
  2675. 55160       if MSGFG <> 0 then MSG$ = "" : gosub *PUT_MES
  2676. 55170     endif
  2677. 55180     '
  2678. 55200     '/* マップ変更    { MAPCHG 01 01 01 1 , 0 } */
  2679. 55210     if CMDN$ = "MAPCHG" then
  2680. 55220       ALMAPS = val ( mid$( CMDL$ ,  8 , 2 ) )
  2681. 55230       SMAPX  = val ( mid$( CMDL$ , 11 , 2 ) )
  2682. 55240       SMAPY  = val ( mid$( CMDL$ , 14 , 2 ) )
  2683. 55250       MSGFG  = val ( mid$( CMDL$ , 17 , 1 ) )
  2684. 55260       gosub *MAPCHG
  2685. 55270       if MSGFG <> 0 then MSG$ = "" : gosub *PUT_MES
  2686. 55280     endif
  2687. 55290     '
  2688. 55300     '/* CD演奏    { CDPLAY 10 , 0 } */
  2689. 55310     if CMDN$ = "CDPLAY" then
  2690. 55320       CDNO = val ( mid$ ( CMDL$ , 8 ,  2 ) )
  2691. 55330       gosub *CDPLY  
  2692. 55340     endif
  2693. 55350     '
  2694. 55400     '/* TIFFファイル表示    { TIFFLD (000/000) FILE.TIF , 0 } */
  2695. 55410     if CMDN$ = "TIFFLD" then
  2696. 55420       CX = val ( mid$ ( CMDL$ ,  9 ,  3 ) )
  2697. 55430       CY = val ( mid$ ( CMDL$ , 13 ,  3 ) )
  2698. 55440       FILE$ =    mid$ ( CMDL$ , 18 , 12 )  
  2699. 55460       load@ sysf$ + FILE$ , (CX,CY)
  2700. 55470     endif
  2701. 55480     '
  2702. 55500     '/* 文字表示     { MWRITE 1 7 0 文字ぃ☆ , 0 } */
  2703. 55510     if CMDN$ = "MWRITE" then 
  2704. 55540       MEST = val ( mid$ ( CMDL$ ,  8 ,  1 ) )
  2705. 55550       MSG$ =       mid$ ( CMDL$ , 10      )  
  2706. 55560       gosub *PUT_MES
  2707. 55570       MEST = 0 
  2708. 55580     endif
  2709. 55590     '
  2710. 55600     '/* 文字を自由な場所に表示する */
  2711. 55610     '/*    { SYMBOL (000/000) 7 01 文字☆ , 0 } */
  2712. 55620     if CMDN$ = "SYMBOL" then 
  2713. 55630       SX    = val ( mid$ ( CMDL$ ,  9 , 3 ) )
  2714. 55640       SY    = val ( mid$ ( CMDL$ , 13 , 3 ) )
  2715. 55680       SYM$  =       mid$ ( CMDL$ , 35     )  
  2716. 55690       if FTSZ  = 16 then def font "システム   16ドット"
  2717. 55700       if FTSZ <> 16 then def font "システム   12ドット"
  2718. 55710       gosub *WRT_SYM
  2719. 55720     endif
  2720. 55730     '
  2721. 55740     '/* MNUSET   { MNUSET (000/000) , 0 } */
  2722. 55750     if CMDN$ = "MNUSET" then
  2723. 55760       MX = val ( mid$ ( CMDL$ ,  9 ,  3 ) )
  2724. 55770       MY = val ( mid$ ( CMDL$ , 13 ,  3 ) )
  2725. 55780     endif
  2726. 55790     '
  2727. 55800     '/* エフェクト   { EFFECT 1 7 , 0 } */ 
  2728. 55810     if CMDN$ = "EFFECT" then 
  2729. 55820       FF  = val ( mid$ ( CMDL$ ,  8 , 1 ) )
  2730. 55830       MJC = val ( mid$ ( CMDL$ , 10 , 1 ) )
  2731. 55840       on FF   gosub *FADE_1 ,*FADE_2 ,*FADE_3 ,*FADE_4 ,*FADE_5 
  2732. 55850       if FF => 6 then 
  2733. 55860         on FF-5 gosub *FADE_6 ,*FADE_7 ,*FADE_8 ,*FADE_9 ,*fade_10
  2734. 55870       endif
  2735. 55880     endif
  2736. 55890     '
  2737. 55900     '/* スクリプトファイル読込
  2738. 55910     if CMDN$ = "SCPRUN" then
  2739. 55920       if MACS = 0 then
  2740. 55930         SCPFILE$ = mid$( CMDN$ , 8 , 12 )
  2741. 55940         SCP_LINE = 0
  2742. 55950         gosub *READ_SCPFILE
  2743. 55960         if SCP_LOOP = 0 then gosub *SCP_MAIN
  2744. 55970       endif
  2745. 55980     endif
  2746. 55990     '
  2747. 56000     '/* タイミング待ち     { WAITES 1 1 , 0 } */
  2748. 56010     if CMDN$ = "WAITES" then
  2749. 56020       TMP = val ( mid$ ( CMDL$ ,  8 , 1 ) )
  2750. 56030       F   = val ( mid$ ( CMDL$ , 10 , 3 ) )
  2751. 56040       wait F
  2752. 56050     endif
  2753. 56060     '
  2754. 56100     '/* マップパターン書き換え   { CHGPTN 01 01 001 , 0 } */ 
  2755. 56110     if CMDN$ = "CHGPTN" then 
  2756. 56120       X  = val ( mid$ ( CMDL$ ,  8 , 2 ) )
  2757. 56130       Y  = val ( mid$ ( CMDL$ , 11 , 2 ) )
  2758. 56140       CHG= val ( mid$ ( CMDL$ , 14 , 3 ) )
  2759. 56150       MAP_DATA(X,Y) = CHG 
  2760. 56160     endif
  2761. 56170     '
  2762. 56200     '/* EUPファイルを演奏する    { EUPPLY 0 1 FILE.EUP , 0 } */
  2763. 56210     if CMDN$ = "EUPPLY" then
  2764. 56220       TMP   = val ( mid$ ( CMDL$ ,  8 , 1 ) ) 
  2765. 56230       LOOP  = val ( mid$ ( CMDL$ , 10 , 1 ) ) 
  2766. 56240       FILE$ =       mid$ ( CMDL$ , 12     )   
  2767. 56250       load@ sysf$ + FILE$ , EUPMEM% , TMP
  2768. 56260       play@ EUPMEM% , LOOP 
  2769. 56270     endif
  2770. 56280     '
  2771. 56300     '/* 画面を消す    { CLRSCN 1 , 0 } */
  2772. 56310     if CMDN$ = "CLRSCN" then 
  2773. 56320       TMP   = val ( mid$ ( CMDL$ ,  8 , 1 ) ) 
  2774. 56330       if TMP = 0 then line (  0,  0) - (319,239),pset,0,bf
  2775. 56340       if TMP = 1 then line ( 32, 16) - (287,191),pset,0,bf
  2776. 56350     endif
  2777. 56360     '
  2778. 56370     '/* PMBファイルのPCMサウンドを鳴らす { PMBSND 01 001 , 0 }*/
  2779. 56380     if CMDN$ = "PMBSND" then 
  2780. 56390       NEIRO  = val ( mid$ ( CMDL$ ,  8 , 2 ) ) 
  2781. 56400       NAGASA = val ( mid$ ( CMDL$ , 11 , 2 ) ) 
  2782. 56410       CH = 14 - 1 
  2783. 56420       outm #255 , &HC0 + CH , &H00 + NEIRO 
  2784. 56430       outm #255 , &HB0 + CH , &H0A , &H40 
  2785. 56440       outm #255 , &HB0 + CH , &H07 , &H7F 
  2786. 56450       outm #255 , &H90 + CH ,   60 , 127  
  2787. 56460       wait NAGASA 
  2788. 56470       outm #255 , &H90 + CH,60,0 
  2789. 56480     endif 
  2790. 56490     '
  2791. 56500     '/* 画面に霧をかける    { MYSTEF 1 7 128 , 0 } */
  2792. 56510     if CMDN$ = "MYSTEF" then 
  2793. 56520       TYPE  = val ( mid$ ( CMDL$ ,  8 , 1 ) ) 
  2794. 56530       MJC   = val ( mid$ ( CMDL$ , 10 , 1 ) ) 
  2795. 56540       PST   = val ( mid$ ( CMDL$ , 12 , 3 ) ) 
  2796. 56550       pastel PST
  2797. 56560       gosub *FADE_PASTEL
  2798. 56570     endif
  2799. 56580     '
  2800. 56600     '/* ANIMEG   { ANIMEG 01 ,0 }
  2801. 56610     if CMDN$ = "ANIMEG" then
  2802. 56620       if ANIMESET = 1 then
  2803. 56630         ANO = val ( mid$( CMDL$ , 8 , 2 ) )
  2804. 56640         gosub *ANIMEG
  2805. 56650       endif
  2806. 56670     endif
  2807. 56680     '
  2808. 56700     '/* マップパターンファイル読込   { RSTPTN 01 } */
  2809. 56710     if CMDN$ = "RSTPTN" then
  2810. 56720       OLDPTN = PTNNUM
  2811. 56730       PTNNUM = val ( mid$ ( CMDL$ ,  8 , 2 ) ) 
  2812. 56740       gosub *RESET_PTN
  2813. 56750     endif
  2814. 56760     '
  2815. 56800     '/* HP/MP回復     { UPHPMP 010 010 7 , 0 } */
  2816. 56810     if CMDN$ = "UPHPMP" then
  2817. 56820       HP = HP + val ( mid$ ( CMDL$ ,  8 , 3 ) )
  2818. 56830       MP = MP + val ( mid$ ( CMDL$ , 12 , 3 ) )
  2819. 56840       if HP => MAXHP then HP = MAXHP
  2820. 56850       if MP => MAXMP then MP = MAXMP
  2821. 56860       SND = 1 
  2822. 56870       gosub *DRAW_POWER
  2823. 56880     endif
  2824. 56890     '
  2825. 56900     '/* Exit確認 */
  2826. 56910     if CMDN$ = "ENDCHK" then
  2827. 56920       MSG$ = "終了してよろしいですか? @gr[A]:OK!" 
  2828. 56930       gosub *PUT_MES 
  2829. 56940       if PT = 1 then ENDS = 1 
  2830. 56960     endif
  2831. 56970     '
  2832. 57000     '/* SAVE NOTE */
  2833. 57010     if CMDN$ = "SAVENT" then
  2834. 57020      MSG$ = "記録してよろしいですか? @gr[A]:OK!" 
  2835. 57030      gosub *PUT_MES 
  2836. 57040      if PT = 1 then gosub *NOTESAVE_1
  2837. 57050     endif
  2838. 57060     '
  2839. 57100     '/* READ NOTE */
  2840. 57110     if CMDN$ = "READNT" then
  2841. 57120       MSG$="現在のデータを破棄してよろしいですか? @gr[A]:OK!"
  2842. 57130       gosub *PUT_MES
  2843. 57140       if PT = 1 then gosub *FILELOAD_1
  2844. 57150     endif
  2845. 57160     '
  2846. 57200     '/* ノーマル ボス戦闘  { BOSBTL BOSS001.RSS , 0 } */
  2847. 57210     if CMDN$ = "BOSBTL" then
  2848. 57220       BOSFILE$ = mid$ ( CMDL$ , 8 )
  2849. 57230       gosub *NBOSBTL
  2850. 57240     endif
  2851. 57250     '
  2852. 57300     '/* ザコ戦闘(敵指定可)  { ZAKOAT 01 , 0 } */
  2853. 57310     'if CMDN$ = "ZAKOAT" then
  2854. 57320     '  ZST = val( mid$( CMDL$ , 8 , 2 ) )
  2855. 57330     '  gosub *BATTLE
  2856. 57340     '  ZST = 0
  2857. 57350     'endif
  2858. 57360     '
  2859. 57400     '/* GOLINE(分岐命令)   { GOLINE 001 , 0 } */
  2860. 57410     if CMDN$ = "GOLINE" then
  2861. 57420       TMP = val( mid$( CMDL$ , 8 ) )
  2862. 57430       SCP_LINE = TMP - 1
  2863. 57440     endif
  2864. 57450     '
  2865. 57500     '/* GETGLD(資金増)   { GETGLD +00220 , 0 } */
  2866. 57510     if CMDN$ = "GETGLD" then
  2867. 57520       TMP = val( mid$(CMDL$ , 8 ,6 ) )
  2868. 57530       GLD = GLD + TMP
  2869. 57540     endif
  2870. 57550     '
  2871. 57600     '/* VWTEXT(テキスト表示) { VWTEXT FILE.TXT ,0 }
  2872. 57610     if CMDN$ = "VWTEXT" then
  2873. 57620       FILE$ = mid$( CMDL$ , 8 , 12 ) 
  2874. 57630       gosub *VIEWER_TEXT
  2875. 57640     endif
  2876. 57650     '
  2877. 57700     '/* フラッシュ     { FLASHE 1 7 ,0}
  2878. 57710     if CMDN$ = "FLASHE" then
  2879. 57720       TYPE = val( mid$( CMDL$ ,  8, 1 ) )
  2880. 57730       MJC  = val( mid$( CMDL$ , 10, 1 ) )
  2881. 57740       VW   = 1
  2882. 57750       on TYPE gosub *FLASH,*MAGIC_FLASH
  2883. 57760     endif
  2884. 57770     '
  2885. 57800     '/* BEEP-Sound */
  2886. 57810     if CMDN$ = "BEEPSD" then
  2887. 57820       BEEP 1
  2888. 57830       TYPE = val ( mid$( CMDL$ , 8 , 1 ) )
  2889. 57840       on type gosub *SND_ATTACK,*SND_HEALING,*SND_DAMAGE,*SND_BOOT98
  2890. 57850     endif
  2891. 57860     '
  2892. 57900     '/* マクロ実行 */
  2893. 57910     if CMDN$ = "MACRUN" then
  2894. 57940       MACTMP$ = CMDL$
  2895. 57950       MACNO = val( mid$( CMDL$, 8 , 3 ) )
  2896. 57960       gosub *RUN_MAC
  2897. 57970       CMDL$ = MACTMP$
  2898. 57980     endif
  2899. 57990     '
  2900. 58000     '/* 攻撃/回復数値処理   { HMPSET 1 1 1 1 , 0 }
  2901. 58010     if CMDN$ = "HMPSET" then
  2902. 58020       TYPE = val( mid$( CMDL$ ,  8 , 1 ) )
  2903. 58030       MFL  = val( mid$( CMDL$ , 10 , 1 ) )
  2904. 58040       BAI  = val( mid$( CMDL$ , 12 , 1 ) )
  2905. 58050       SPE  = val( mid$( CMDL$ , 14 , 1 ) )
  2906. 58100       if TYPE = 0 then
  2907. 58110         PP = int ( RND * 5 ) + WPN * PWR
  2908. 58120         DM = PP - MSDFP 
  2909. 58130         if int( rnd * 10 ) + 1 => 10 then 
  2910. 58140           DM = ( rnd + 1 ) * DM
  2911. 58150           MJC = 2
  2912. 58160           gosub *FLASH
  2913. 58170           MSG$ = "@gr攻撃が敵の弱点に命中した!"
  2914. 58180           gosub *PUT_MES
  2915. 58190         endif
  2916. 58200         gosub *ATTACK_DAMAGE
  2917. 58210       else if TYPE = 1 then
  2918. 58220         if MP => SPE then
  2919. 58230           PP = int ( RND * 5 ) + BAI * MGC 
  2920. 58240           DM = PP - MSDFP 
  2921. 58250           if MFL = CLJ then DM = ( rnd + 1 ) * DM
  2922. 58260           gosub *ATTACK_DAMAGE
  2923. 58270           MP = MP - SPE
  2924. 58280           gosub *USE_HPMP
  2925. 58290         else
  2926. 58300           gosub *NO_MGC
  2927. 58310         endif
  2928. 58320       else if TYPE = 2 then
  2929. 58330         if MP => SPE then
  2930. 58340           PP = int ( RND * 10 )+ int ( BAI * MGC / 2 )  
  2931. 58350           MSG$ = "@grHPが" + str$( PP ) + "回復した! ▼@st" 
  2932. 58360           gosub *PUT_MES
  2933. 58370           HP = HP + PP 
  2934. 58380           if HP => MAXHP then HP = MAXHP
  2935. 58390           MP = MP - SPE
  2936. 58400           if MP <= 0 then MP = 0
  2937. 58410           SND = 1 
  2938. 58420           gosub *DRAW_HP
  2939. 58430           gosub *USE_HPMP
  2940. 58440         else
  2941. 58450           gosub *NO_MGC
  2942. 58460         endif
  2943. 58470       else if TYPE = 9 then
  2944. 58480         sprite 1,BCHR%(0,1),BDMGPTN%
  2945. 58490         DM = MSATP + int( rnd * 10 ) - ARM 
  2946. 58500         if DM < 0 then DM = 0 
  2947. 58510         MSG$ = "@rd#NMは" + str$ ( DM ) + "のダメージを受けた! ▼@wh"
  2948. 58520         gosub *PUT_MES   
  2949. 58530         gosub *INT_BTLSPR
  2950. 58540         HP = HP - DM 
  2951. 58550         if HP <= 0 then 
  2952. 58560           ENDS = 1 
  2953. 58570           MSA  = 2 
  2954. 58580           PT   = 1 
  2955. 58600           ENDCOM = 1
  2956. 58610           MSG$ = DEAD_MES$
  2957. 58620           gosub *PUT_MES
  2958. 58630         endif 
  2959. 58640         gosub *USE_HPMP
  2960. 58650       endif
  2961. 58660     endif
  2962. 58680     '
  2963. 58700     '/* スプライトパターン変更
  2964. 58710     if CMDN$ = "CHGSPT" then
  2965. 58720       CHR = val( mid$( CMDL$ ,  8 , 3 ) )
  2966. 58730       PTN = val( mid$( CMDL$ , 12 , 3 ) )
  2967. 58740       sprite 1,CHR,PTN
  2968. 58750     endif
  2969. 58760     '
  2970. 58800     '/* パッド入力による分岐 { PADDIV 010 034 056 , 0 }
  2971. 58810     if CMDN$ = "PADDIV" then
  2972. 58820       A = val( mid$( CMDL$ ,  8 , 3 ) )
  2973. 58830       B = val( mid$( CMDL$ , 12 , 3 ) )
  2974. 58840       R = val( mid$( CMDL$ , 16 , 3 ) )
  2975. 58850       gosub *INP_PAD
  2976. 58860       while PT = 0 
  2977. 58870         gosub *INP_PAD
  2978. 58880       wend
  2979. 58890       gosub *SND_PAD
  2980. 58900       if PT = 1 then SCP_LINE = A - 1
  2981. 58910       if PT = 2 then SCP_LINE = B - 1
  2982. 58920       if PT = 4 then SCP_LINE = R - 1
  2983. 58940     endif
  2984. 58950     '
  2985. 59000     '/* ステータス設定
  2986. 59010     if CMDN$ = "WPNSET" then
  2987. 59020       WPN = val( mid$( CMDL$ ,  8 , 1 ) )
  2988. 59030       if WPN > 8 or WPN < 1 then WPN = 1
  2989. 59040     else if CMDN$ = "ARMSET" then
  2990. 59050       ARM = val( mid$( CMDL$ ,  8 , 1 ) )
  2991. 59060       if ARM > 8 or ARM < 1 then ARM = 1
  2992. 59070     else if CMDN$ = "SLDSET" then
  2993. 59080       SLD = val( mid$( CMDL$ ,  8 , 1 ) )
  2994. 59090       if SLD > 8 or SLD < 1 then SLD = 1
  2995. 59100     endif
  2996. 59110     '
  2997. 59200     '/* スプライト表示/非表示 */
  2998. 59210     if CMDN$ = "CHROFF" then 
  2999. 59220       J = 8
  3000. 59230       SLOOP = 1
  3001. 59240       while SLOOP = 1 
  3002. 59250         CR = val ( mid$( CMDL$ , J , 3 ) )
  3003. 59260         if CR  = 0  and J =   8 then gosub *CHR_OFF 
  3004. 59270         if CR  = 0  and J => 12 then SLOOP = 0
  3005. 59280         if CR <> 0 then sprite 0,CR,0 : gosub *OUT_CHR
  3006. 59290         J = J + 4
  3007. 59300       wend
  3008. 59310     else if CMDN$ = "CHRON_" or CMDN$ = "CHR_ON" then
  3009. 59320       J = 8
  3010. 59330       SLOOP = 1
  3011. 59340       while SLOOP = 1 
  3012. 59350         CR = val ( mid$( CMDL$ , J , 3 ) )
  3013. 59360         if CR  = 0 and J =   8 then gosub *CHR_ON 
  3014. 59370         if CR  = 0 and J => 12 then SLOOP = 0
  3015. 59380         if CR <> 0             then sprite 0,CR,1 
  3016. 59390         J = J + 4
  3017. 59400       wend
  3018. 59410     endif
  3019. 59420     '
  3020. 59500     '/* キャラクタ移動コマンド     { CHRMOV 020 1 , 0 } */
  3021. 59510     if CMDN$ = "CHRMOV" then
  3022. 59520       CHRNO = val ( mid$ ( CMDL$ ,  8 , 3 ) )
  3023. 59530       PD    = val ( mid$ ( CMDL$ , 12 , 1 ) )
  3024. 59540       if CHRNO = MCHR%(0,1) then 
  3025. 59550         on PD gosub *S_UP,*S_RIGHT,*S_DOWN,*S_LEFT
  3026. 59660         gosub *INT_PAD
  3027. 59670       else
  3028. 59680         MMVCHR = CHRNO
  3029. 59690         SPRCLR = 4
  3030. 59700         on PD gosub *CHR_UP , *CHR_RIGHT , *CHR_DOWN , *CHR_LEFT
  3031. 59710       endif
  3032. 59720     endif
  3033. 59730     '
  3034. 59740     '/* フィールドキャラクタ設定 { CHRSET 030 FLDCHR.TIF } */
  3035. 59750     if CMDN$ = "CHRSET" then
  3036. 59760       SGCN  = val ( mid$( CMDL$ ,  8 ,  1 ) )
  3037. 59770       CHRNO = val ( mid$( CMDL$ , 10 ,  3 ) )
  3038. 59780       FILE$ =       mid$( CMDL$ , 14 , 12 ) 
  3039. 59790       load@ sysf$ + FILE$ , (320,  0)
  3040. 59800       gosub *TOKA
  3041. 59810       if SGCN < 1 or SGCN > 2 then SGCN = 1
  3042. 59820       BY = 0
  3043. 59830       for X = 0 to 7
  3044. 59840         BX    = 320 + X * 16
  3045. 59850         OFSET = 384 + X * 4 + (SGCN-1) * 32
  3046. 59860         gosub *SPRSET_1
  3047. 59870       next X
  3048. 59880       if EXCHRSET(SGCN) = 0 then
  3049. 59890         def sprite 1,CHRNO,(0,240),384+(SGCN-1)*32,1,1
  3050. 59900         EXCHRSET(SGCN) = 1
  3051. 59910       endif
  3052. 59920     endif
  3053. 59930     '
  3054. 59940   endif
  3055. 59950   *SERS
  3056. 59960     if ENDS   <> 0 then ENDCOM   = 1
  3057. 59970   on error goto *ERR_END
  3058. 59980 return
  3059. 59990 '
  3060. 60000 '+--==================================================--+
  3061. 60010 '|○  恐怖(?)のデータ編集モジュール                  ○|
  3062. 60020 '|  [ PUTPTN ]   [ CHGPTN ] [ LOADFILE ] [ WRITEFILE ]  |
  3063. 60030 '|○[ SetTable ] [  Edit_NormalEvent   ] [  TBLSAVE  ]○|
  3064. 60040 '+--==================================================--+
  3065. 60100 '/* ---<<設置パターン変更>>--- */
  3066. 60110 *CHGPTN 
  3067. 60120   OFSET = 0
  3068. 60130   gosub *MBUF_IN
  3069. 60140   gosub *INT_PAD
  3070. 60150   gosub *CHR_OFF
  3071. 60160   if EXCLAS => 2 and GRPBFSET <> 9 then 
  3072. 60170     MJC  = 0 
  3073. 60180     TYPE = 1 
  3074. 60190     gosub *FADE_PASTEL
  3075. 60200   endif
  3076. 60210   if EXCLAS = 0 or GRPBFSET <> 9 then 
  3077. 60220     for Y = 0 to 11 
  3078. 60230       CY = Y * 16   
  3079. 60240       for X = 0 to 15 
  3080. 60250         CX = X * 16 + 32
  3081. 60260         put@a ( CX, CY)-( CX + 15, CY + 15),MAP_PTN%,,,,,256*(16*Y+X+1)
  3082. 60270       next X 
  3083. 60280     next Y 
  3084. 60290   endif 
  3085. 60300   if EXCLAS => 2 and GRPBFSET <> 9 then 
  3086. 60310     gosub *GBUF_IN
  3087. 60320     GRPBFSET = 9
  3088. 60330   endif
  3089. 60340   if EXCLAS => 2 and GRPBFSET = 9 then gosub *GBUF_OUT
  3090. 60350   MSG$ = "@wh<<Aボタンで決定して下さい>>@th" 
  3091. 60370   gosub *PUT_MES 
  3092. 60380   OLDPTN = PTNCHG
  3093. 60380   BTSET = 0
  3094. 60390   while BTSET = 0
  3095. 60400     if PD   =  1 then CHGY  = CHGY - 1
  3096. 60410     if CHGY <  0 then CHGY  = 11
  3097. 60420     if PD   =  5 then CHGY  = CHGY + 1
  3098. 60440     if CHGY > 11 then CHGY  =  0
  3099. 60450     if PD   =  3 then CHGX  = CHGX + 1
  3100. 60460     if CHGX > 15 then CHGX  =  0
  3101. 60470     if PD   =  7 then CHGX  = CHGX - 1
  3102. 60480     if CHGX <  0 then CHGX  = 15
  3103. 60490     BTSET = PT
  3104. 60510     line (32+CHGX*16,CHGY*16) - (47+CHGX*16,15+CHGY*16),xor,7,bf 
  3105. 60520     gosub *INP_PAD
  3106. 60530     if PD = 0 then
  3107. 60540       gosub *BL_HELP
  3108. 60550     else
  3109. 60560       wait PADWAIT
  3110. 60570     endif
  3111. 60580     line (32+CHGX*16,CHGY*16) - (47+CHGX*16,15+CHGY*16),xor,7,bf 
  3112. 60590   wend 
  3113. 60600   PTNCHG = CHGY * 16 + CHGX + 1
  3114. 60610   if BTSET = 2 then PTNCHG = OLDPTN
  3115. 60620   gosub *MBUF_OUT
  3116. 60650   MSG$ = "@grAボタンでこのパターンが入力されます♪@th"
  3117. 60660   gosub *PUT_MES
  3118. 60670   gosub *INT_PAD
  3119. 60680   wait 20
  3120. 60690   gosub *CHR_ON
  3121. 60700 return
  3122. 60710 '
  3123. 60750 '/* ---<< バルーンヘルプ >>--- */
  3124. 60760 *BL_HELP
  3125. 60770   OLDCHG = CHG
  3126. 60780   CHG = CHGY * 16 + CHGX + 1
  3127. 60790   if CHG <= NMPTN then MSG$ = "- 普通のパターンです -"
  3128. 60800   if CHG <= HVPTN and CHG > NMPTN then MSG$ = "- Reserved -"
  3129. 60810   if CHG <= HDPTN and CHG > HVPTN then MSG$ = "- Reserved -"
  3130. 60820   if CHG <= EVPTN and CHG > HDPTN then MSG$ = "- イベントパターンです -"
  3131. 60830   if CHG <= NIPTN and CHG > EVPTN then MSG$ = "- 不進行パターンです -"
  3132. 60840   if OLDCHG <> CHG then
  3133. 60850     MSG$ = MSG$ + "@th"
  3134. 60860     gosub *PUT_MES
  3135. 60870   endif
  3136. 60880 return
  3137. 60890 '
  3138. 60900 '/* ---<<マップファイル保存機能>>--- */
  3139. 60910 *WRITEFILE
  3140. 60920   MSG$ = "現在ファイル書き込み中です♪@th" : gosub *PUT_MES 
  3141. 60930   FILE$ = stryf$ + "EMAP_" + mid$(str$(ALMAPS),2) + ".BMD"
  3142. 60940   kill FILE$ 
  3143. 60950   save@ FILE$,MAP_DATA%  
  3144. 60960   MSG$ = "無事保存し終わりましたよぉ♪ ▼@th" : gosub *PUT_MES
  3145. 60970   gosub *INT_PAD
  3146. 60980 return 
  3147. 60990 '
  3148. 61000 '/* ---<<パターンを置く>>--- */
  3149. 61010 *Edit_PutPatern 
  3150. 61020 *PUTPTN 
  3151. 61030   MAP_DATA%(SMAPX,SMAPY) = CHG  
  3152. 61040   X = ( SMAPX - ( MAPX - 1 ) * VWMAPX ) * 16 + 16 
  3153. 61050   Y = ( SMAPY - ( MAPY - 1 ) * VWMAPY ) * 16
  3154. 61060   put@a ( X, Y) - (X+15,Y+15),MAP_PTN%,,,,,256*MAP_DATA%(SMAPX,SMAPY)
  3155. 61070   gosub *SND_PAD
  3156. 61080 return 
  3157. 61090 '
  3158. 61100 '/* ---<< マップ読み込みルーチン(番号指定可)>>--- */
  3159. 61110 *LOADFILE 
  3160. 61120   gosub *INT_PAD
  3161. 61130   BTSET = 0 
  3162. 61140   CM = ALMAPS 
  3163. 61150   while BTSET = 0
  3164. 61160     if PD =  5 then CM    = CM - 1
  3165. 61170     if CM <  1 then CM    =  1
  3166. 61180     if PD =  1 then CM    = CM + 1
  3167. 61190     if CM > 99 then CM    = 99
  3168. 61200     if PT =  2 then BTSET =  1
  3169. 61210     MSG$ = "@gr編集Map番号入力:"+str$(CM)+" 番Map ヒ<B決定>フ@th"
  3170. 61240     gosub *PUT_MES
  3171. 61250     gosub *INT_PAD
  3172. 61260     while PD = 0  
  3173. 61270       gosub *INP_PAD
  3174. 61280       if PT <> 0 or BTSET <> 0 then PD = 99
  3175. 61310     wend
  3176. 61320   wend
  3177. 61330   ALMAPS = CM
  3178. 61340   gosub *READ_MAP
  3179. 61350   gosub *FADE_DISPMAP
  3180. 61360   gosub *INT_PAD 
  3181. 61370   GRPBFSET = 0
  3182. 61380 return 
  3183. 61390 '
  3184. 61400 '/* ---<<データテーブル保存機能>>--- */
  3185. 61410 *TBLSAVE
  3186. 61420   color 4 
  3187. 61430   print "現在ファイル書き込み中です♪"
  3188. 61440   FLNO% = 1
  3189. 61450   FILE$ = stryf$ + "EMAP_" + mid$( str$(ALMAPS),2 ) + ".MTB"
  3190. 61460   if subset = 0 then KILL FILE$
  3191. 61470   open FILE$ for output as #FLNO%
  3192. 61480     write#FLNO% ,  CDBG , MAPX_MAX , MAPY_MAX 
  3193. 61490     write#FLNO% , MNSON ,   PTNNUM ,   BACKNO , BTLPST!
  3194. 61500     color 3 
  3195. 61510     print "Writing Monster Data Table..."
  3196. 61520     for I = 1 to 8
  3197. 61530       write#FLNO% , MSNMD$(I),  MSLVD(I), MSMXHPD(I)
  3198. 61540       write#FLNO% , MSATPD(I),  MSDFD(I),    CLJD(I)
  3199. 61550       write#FLNO% , MSEXPD(I), MSGLDD(I), MSTIFD$(I), MSSIZD(I)
  3200. 61560     next I
  3201. 61570     color 3 
  3202. 61580     print "Writing Event Data Table..."
  3203. 61590     write#FLNO% , AMC
  3204. 61600     for DP = 1 to AMC
  3205. 61610       write#FLNO%, EVX(DP),EVY(DP),CMND$(DP)
  3206. 61630     next DP
  3207. 61730   close #FLNO%
  3208. 61740   color 4 
  3209. 61750   print "無事保存し終わりましたよぉ♪"
  3210. 61760   color 7
  3211. 61770 return
  3212. 61780 '
  3213. 61800 '/* ---<<文字色変更>>--- */
  3214. 61810 *Edit_CHGColor
  3215. 61820   input "色番号は何ですぅ?...(0-7)...",CL
  3216. 61830   color CL
  3217. 61840 return
  3218. 61850 '
  3219. 62000 '/* ---<<編集メニュー>>--- */
  3220. 62010 *EX_MENU
  3221. 62020   MSG$ = "@gr座標= X" + str$(SMAPX) + "/Y" + str$(SMAPY) + "@th"
  3222. 62030   gosub *PUT_MES
  3223. 62040   gosub *CHR_OFF
  3224. 62050   gosub *EX_WIN
  3225. 62060   MENULP = 1
  3226. 62070   while MENULP = 1
  3227. 62080     if CMDNO => 7 or CMDNO = 0 then CMDNO = 1
  3228. 62090     line ( 66, 91+CMDNO*13) - (197,103+CMDNO*13),xor,7,bf
  3229. 62100     gosub *INT_PAD
  3230. 62110     while PD = 0
  3231. 62120       gosub *INP_PAD
  3232. 62140       if PT <> 0 then PD = 99
  3233. 62150       wait PADWAIT
  3234. 62160     wend
  3235. 62170     line ( 66, 91+CMDNO*13) - (197,103+CMDNO*13),xor,7,bf
  3236. 62180     if PD = 5 then CMDNO = CMDNO + 1 
  3237. 62190     if PD = 1 then CMDNO = CMDNO - 1 
  3238. 62200     if CMDNO <= 0 then CMDNO = 6
  3239. 62210     if CMDNO => 7 then CMDNO = 1
  3240. 62220     if PT = 1 then 
  3241. 62230       on CMDNO gosub *CHGPTN , *SetTable , *WRITEFILE , *LOADFILE
  3242. 62240       if CMDNO = 5 then gosub *SYSMONITOR
  3243. 62250       if CMDNO = 6 then CMDL$ = "ENDCHK" : gosub *SCP_MAIN
  3244. 62260       gosub *EX_WIN
  3245. 62270       if ENDS = 1 then MENULP = 0
  3246. 62280     else if PT = 2 then
  3247. 62290       MENULP = 0 
  3248. 62300     endif
  3249. 62310   wend
  3250. 62320   MSG$ = "" 
  3251. 62330   gosub *PUT_MES
  3252. 62340   gosub *FADE_DISPMAP
  3253. 62350   gosub *INT_PAD
  3254. 62360   gosub *CHR_ON 
  3255. 62370 return
  3256. 62380 '
  3257. 62400 *EX_WIN
  3258. 62410   pastel 128
  3259. 62420   for Y = 0 to 89 step 2
  3260. 62430     line ( 64 , 102 + Y ) - ( 263 , 102 + Y ),pastel,1,b
  3261. 62440     line ( 64 , 191 - Y ) - ( 263 , 191 - Y ),pastel,1,b
  3262. 62450   next Y
  3263. 62460   line ( 64,102) - (263,191),pset,7,b
  3264. 62470   symbol ( 66,104),"パターン選択  ",S!,S!,7
  3265. 62480   symbol ( 66,117),"イベント編集  ",S!,S!,7
  3266. 62490   symbol ( 66,130),"マップ配列保存",S!,S!,7
  3267. 62500   symbol ( 66,143),"マップ読込    ",S!,S!,7
  3268. 62510   symbol ( 66,156),"システムモニタ",S!,S!,7
  3269. 62520   symbol ( 66,169),"EXIT      ",S!,S!,7
  3270. 62530 return
  3271. 62540 '
  3272. 62800 '/* ---○デバッグ用システムモニタ○--- */
  3273. 62810 *SYSMONITOR
  3274. 62820   gosub *INT_PAD
  3275. 62830   if EXCLAS => 1 then gosub *MBUF_IN 
  3276. 62840   MJC = 0 
  3277. 62860   gosub *FADE_PASTEL
  3278. 62870   symbol ( 35, 18),"■システムモニタ■",S!*2,S!,7,,,1
  3279. 62880   MD$ = str$(SMAPX)+","+str$(SMAPY)+" /"+str$(MAP_DATA%(SMAPX,SMAPY))
  3280. 62890   SX = 35 : SY = 32 : SYM$ = "@gr" + MD$ : gosub *WRT_SYM
  3281. 62900   SX = 35 : SY = 46 : SYM$ = "@grマップ画面:" + str$(MAPX)+","+str$(MAPY)
  3282. 62920   gosub *WRT_SYM  
  3283. 62930   SX = 35 : SY=60 : SYM$="@grマップ番号:" + str$(ALMAPS) : gosub *WRT_SYM
  3284. 62940   SX = 35 : SY=74 : SYM$="@gr動作モード  :" + SMODE$       : gosub *WRT_SYM
  3285. 62950   PADSET = 4     
  3286. 62960   gosub *WAIT_PAD
  3287. 62970   if EXCLAS => 1 then gosub *MBUF_OUT else gosub *DISP_MAP
  3288. 62980 return
  3289. 62990 '
  3290. 63000 '/* ---<<データテーブル編集機能>>--- */
  3291. 63010 *SetTable
  3292. 63020   sprite off
  3293. 63030   MJC  = 1
  3294. 63040   TYPE = 1
  3295. 63050   gosub *FADE_PASTEL
  3296. 63060   console 0,24,2
  3297. 63070   color 7,0, 7,4
  3298. 63080   SUBSET   = 0
  3299. 63090   EDITMENU = 1
  3300. 63100   while EDITMENU = 1
  3301. 63110     on error goto *ERR_PRINTEND
  3302. 63120     print "┌───────ヌ テーブル編集 ネ───────┐"
  3303. 63130     print "│(V)テーブルデータ一覧       (S)テーブルデータ保存  ┃"
  3304. 63140     print "│(E)イベント設定編集    (M)モンスター設定編集  ┃"
  3305. 63150     print "│(D)マップ基礎設定変更  (C)表示色変更  (H)Help ┃"
  3306. 63160     print "│(A)アドインプログラム  (Z)DOSコンソール    (X)終了 ┃"
  3307. 63170     print "│┏━━━━━━━━━━━━━━━━━━━━━┐┃"
  3308. 63180     print "│┃コマンドをキーボードから入力してください。│┃"
  3309. 63190     print "└┴━━━━━━━━━━━━━━━━━━━━━┴┛"
  3310. 63200     gosub *Key_Input 
  3311. 63210     if K$ = "A" or K$ = "a" then gosub *ADDIN_PRO
  3312. 63220     if K$ = "E" or K$ = "e" then gosub *EVENTED
  3313. 63230     if K$ = "C" or K$ = "c" then gosub *Edit_CHGColor 
  3314. 63240     if K$ = "D" or K$ = "d" then gosub *CHG_MAPDATASET
  3315. 63250     if K$ = "M" or K$ = "m" then gosub *MSTBLED 
  3316. 63260     if K$ = "S" or K$ = "s" then gosub *TBLSAVE 
  3317. 63270     if K$ = "V" or K$ = "v" then gosub *Edit_ViewTable 
  3318. 63280     if K$ = "X" or K$ = "x" then EDITMENU = 0
  3319. 63290     if K$ = "H" or K$ = "h" then 
  3320. 63300       print "○>> (ヘルプ)付属のマニュアルを見てねっ♪ <<○"
  3321. 63330     else if K$ = "Z" or K$ = "z" then 
  3322. 63340       on error goto *ERR_RESUME
  3323. 63350       if EXCALS => 1 then gosub *SBUF_IN
  3324. 63360       console 0,24,0
  3325. 63370       shell
  3326. 63380       console 0,24,2
  3327. 63390       if EXCLAS => 1 then gosub *SBUF_OUT
  3328. 63400       on error goto *ERR_END
  3329. 63410     endif
  3330. 63420     wait 20
  3331. 63430   wend
  3332. 63440   on error goto *ERR_END
  3333. 63450   gosub *SPR_ON
  3334. 63460   gosub *DRW_WAKU
  3335. 63470   TPSET = 0
  3336. 63480 return
  3337. 63490 '
  3338. 63500 '/* ---<<モンスターテーブル編集機能>>--- */
  3339. 63510 *MSTBLED
  3340. 63520   print "┌───ヌ モンスターテーブル編集 ネ───┐"
  3341. 63530   print "│モンスターテーブルを書き換えます。    □┃"
  3342. 63540   print "└━━━━━━━━━━━━━━━━━━━━┛"
  3343. 63550   MSEDLOOP = 1
  3344. 63560   while MSEDLOOP = 1
  3345. 63570     gosub *MSVW
  3346. 63580     input "何番を書き換えますかぁ?...(0:中止)...",EN
  3347. 63590     if EN <> 0 then
  3348. 63600       input "モンスター名...(現在:"+MSNMD$(EN)       +")...", MSNMD$(EN)
  3349. 63610       input "レベル....(現在:"+str$(  MSLVD(EN))+")...",  MSLVD(EN)
  3350. 63620       input "最大HP....(現在:"+str$(MSMXHPD(EN))+")...",MSMXHPD(EN)
  3351. 63630       input "攻撃力....(現在:"+str$( MSATPD(EN))+")...", MSATPD(EN)
  3352. 63640       input "防御力....(現在:"+str$(  MSDFD(EN))+")...",  MSDFD(EN)
  3353. 63650       input "弱点番号..(現在:"+str$(   CLJD(EN))+")...",   CLJD(EN)
  3354. 63660       input "経験値....(現在:"+str$( MSEXPD(EN))+")...", MSEXPD(EN)
  3355. 63670       input "GOLD......(現在:"+str$( MSGLDD(EN))+")...", MSGLDD(EN)
  3356. 63680       input "TIFファイル...(現在:"+     MSTIFD$(EN) +")...",MSTIFD$(EN)
  3357. 63690       input "サイズ....(現在:"+str$( MSSIZD(EN))+")...", MSSIZD(EN)
  3358. 63700     endif
  3359. 63710     print "まだ編集しますかぁ?...(y/n)..."
  3360. 63720     gosub *Key_Input
  3361. 63730     if K$ = "N" or K$ = "n" then MSEDLOOP = 0
  3362. 63740   wend
  3363. 63750 return 
  3364. 63760 '
  3365. 64000 '/* ---<<イベント編集>>--- */
  3366. 64010 *EVENTED
  3367. 64020   print "○----<< イベント編集>> ----○"
  3368. 64030   EVEDLOOP = 1
  3369. 64040   while EVEDLOOP = 1
  3370. 64050     gosub *EVVW
  3371. 64060     input "何番のデータを書き換えますか?...(0:中止)...",EVNO
  3372. 64070     if EVNO <> 0 then 
  3373. 64080       if EVNO > AMC then
  3374. 64090         print "データ登録数増やしてもいいんですね?...(y/n)..."
  3375. 64100         gosub *Key_Input
  3376. 64110         if K$ = "y" or K$ = "Y" then
  3377. 64120           TMM$ = "最大イベント登録数は"
  3378. 64130           print TMM$ + str$(AMC) + "から" + str$(EVNO) + "になります."
  3379. 64140           AMC = EVNO
  3380. 64150         else
  3381. 64160           print "それじゃその番号には登録できないよぉ♪"
  3382. 64170         endif
  3383. 64180       else
  3384. 64190         E = EVNO
  3385. 64200         SUBLOOP = 1
  3386. 64210         while SUBLOOP = 1
  3387. 64220           print "どの座標に登録しますか?..(1:現設定 2:カーソル 3:新規)...";
  3388. 64230           gosub *Key_Input : print K$
  3389. 64240           if K$ = "2" then EVX(E) = SMAPX : EVY(E) = SMAPY
  3390. 64250           if K$ = "3" then
  3391. 64260             input "X位置..(現在:"+ str$( EVX(E) ) + ")...", EVX(E)
  3392. 64270             input "Y位置..(現在:"+ str$( EVY(E) ) + ")...", EVY(E)
  3393. 64280           endif
  3394. 64290           input "コマンド...(現在:"+      CMND$(E)   + ")...",CMND$(E)
  3395. 64300           print "  No. X  Y Command-Line------"
  3396. 64310           print using "  ##:###:###:";E;EVX(E);EVY(E);
  3397. 64320           print using "&                   &";CMND$(E)
  3398. 64330           print "これでよろしいですか?...(y/n)..."
  3399. 64340           gosub *Key_Input
  3400. 64350           if K$ = "Y" or K$ = "y" then SUBLOOP = 0
  3401. 64360         wend
  3402. 64370       endif
  3403. 64380     endif
  3404. 64390     print "まだ他のデータを編集しますか?...(y/n)..."
  3405. 64400     gosub *Key_Input
  3406. 64410     if K$ = "N" or K$ = "n" then EVEDLOOP = 0
  3407. 64420   wend
  3408. 64430 return
  3409. 64440 '
  3410. 64600 '/* ---<<イベント表示>>--- */
  3411. 64610 *EVVW
  3412. 64620   print "ネイベントデータを表示します.
  3413. 64630   print "  No. X  Y Command-Line------"
  3414. 64640   for I = 1 to AMC
  3415. 64650     print using "  ##:###:###:"; I; EVX(I); EVY(I);
  3416. 64660     print using "&                                  &"; CMND$(I)
  3417. 64670   next I
  3418. 64680   print "合計で ";AMC;"個のイベントデータが設定されています。"
  3419. 64690   print "<< 何かキーを押して下さい >>" 
  3420. 64700   gosub *Key_Input
  3421. 64710 return
  3422. 64720 '
  3423. 64800 '/* ---<<モンスターテーブル表示>>--- */
  3424. 64810 *MSVW
  3425. 64820   print "ネモンスターデータを表示します.
  3426. 64830   print "  No,モンスター名,Lv,HP,AT,DF,CJ,EP,GD,TIF---------------"
  3427. 64840   for I = 1 to 8
  3428. 64850     print using "  #:&                  &:##:"; I ;MSNMD$(I) ;
  3429. 64860     print using "##:#####:###:"    ;MSLVD(I);MSMXHPD(I)       ;MSATPD(I);
  3430. 64870     print using "###:#:####:####:" ;MSDFD(I);CLJD(I);MSEXPD(I);MSGLDD(I);
  3431. 64880     print using "&          &:#"   ;MSTIFD$(I)      ;MSSIZD(I)
  3432. 64890   next I
  3433. 64900   print "<< 何かキーを押して下さい >>"
  3434. 64910   gosub *Key_Input
  3435. 64920 return
  3436. 64930 '
  3437. 65000 '/* ---<<データテーブル表示機能>>--- */
  3438. 65010 *Edit_ViewTable
  3439. 65020  print "┌──────ヌ データテーブル一覧 ネ───────┐"
  3440. 65030  print "│モンスターテーブル・イベントテーブルを表示します。┃"
  3441. 65040  print "└━━━━━━━━━━━━━━━━━━━━━━━━━┛"
  3442. 65050  gosub *MSVW
  3443. 65060  gosub *EVVW
  3444. 65080 return
  3445. 65090 '
  3446. 65100 '*/ ---○マップ設定変更○--- */
  3447. 65110 *CHG_MAPDATASET
  3448. 65120   print "┌──────ヌ マップ基礎設定変更 ネ───────┐"
  3449. 65130   print "│マップデータファイルの基礎設定を変更します。      ┃"
  3450. 65140   print "└━━━━━━━━━━━━━━━━━━━━━━━━━┛"
  3451. 65150   input "CD-BGM番号..............(現在:"+str$(CDBG)  +")...",CDBG 
  3452. 65160   input "モンスター出現( 0=OFF/1=ON )..(現在:"+str$(MNSON) +")...",MNSON
  3453. 65170   input "パターンファイル番号( 0-7 )...(現在:"+str$(PTNNUM)+")...",PTNNUM
  3454. 65180   input "戦闘時背景TIF番号( 0-7 )...(現在:"+str$(BACKNO)+")...",BACKNO
  3455. 65190   if MNSON = 1 then 
  3456. 65200     input "戦闘が起こる確率......(現在:"+str$(BTLPST!)+")...",BTLPST!
  3457. 65210   else
  3458. 65220     BTLPST! = 0
  3459. 65230   endif
  3460. 65240 return
  3461. 65250 '
  3462. 65400 '*/ ---○アドインプログラム○--- */
  3463. 65410 *ADDIN_PRO
  3464. 65420   print "ネアドインプログラムは設定されていません."
  3465. 65430 return
  3466. 65440 '
  3467.